Adatbázis: SQL, XML DB

[delete] trigger tévedhet?

Üdv.
van egy trigger ami azt teszi, hogy egy tábla értékét módosítja aszerint hogy egy másik táblába milyen értéket írunk.

Trigger:

update keszlet
set menny=menny-NEW.menny
where cikk_id=NEW.cikk_id and raktar_id=NEW.raktar_id

update keszlet
set menny=menny-NEW.menny+OLD.menny
where cikk_id=NEW.cikk_id and raktar_id=NEW.raktar_id

update keszlet
set menny=menny+OLD.menny
where cikk_id=OLD.cikk_id and raktar_id=OLD.raktar_id

Létezhet az, hogy a mennyiség eltér (elég sokkal) a kívánt értéktől?:
avagy nincs-e hiba a fenti triggerbe?

pch

[Megoldva] SELECT után eltérő eredmény phpMyAdminb-ban

Sziasztok!

Van egy táblám, amin ha a

SELECT *, CONCAT(REPEAT('1/', (CHAR_LENGTH(path) - CHAR_LENGTH(REPLACE(path, '/', '')))), ordering, '/') AS ordering_path FROM `categories` WHERE 1

kérést lefuttatom, parancssorban ezt kapom (ami a várt eredmény):

+----+----------+----------+---------------+
| id | path     | ordering | ordering_path |
+----+----------+----------+---------------+
| 33 | 0/18/30/ |        1 | 1/1/1/1/      | 
| 32 | 0/29/    |        1 | 1/1/1/        | 
| 31 | 0/18/    |        2 | 1/1/2/        | 
| 18 | 0/       |        2 | 1/2/          | 
| 29 | 0/       |        3 | 1/3/          | 
| 30 | 0/18/    |        1 | 1/1/1/        | 
+----+----------+----------+---------------+

Ellentétben phpMyAdminnal, amelyben ugyanezt a kérést lefutattva az eredmény:

id	path		ordering	ordering_path
33	0/18/30/	1		[BLOB - 8B]
32	0/29/		1		[BLOB - 6B]
31	0/18/		2		[BLOB - 6B]
18	0/		2		[BLOB - 4B]
29	0/		3		[BLOB - 4B]
30	0/18/		1		[BLOB - 6B]

Miért ad phpMyAdmin más eredményt?

A tábla szerkezete a következő:

+--------------------+---------------------+------+-----+---------+----------------+
| Field              | Type                | Null | Key | Default | Extra          |
+--------------------+---------------------+------+-----+---------+----------------+
| id                 | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment | 
| path               | varchar(127)        | NO   |     |         |                | 
| ordering           | bigint(20) unsigned | NO   |     | 0       |                | 
+--------------------+---------------------+------+-----+---------+----------------+

Előre is köszönöm az ötleteket!

[megoldva] postgresql kérdés: columnnév behelyettesítése selectbe

Sziasztok!

Lenne egy olyan fura kérdésem, hogy:

Egy postgresql adatbázisban az egyik táblában egy oszlop azt adja meg, hogy a másik tábla melyik oszlopának értékét kell kiolvasni (egyfajta hivatkozás oszlopnév alapján).

Próbálkoztam olyan selecttel ami:

select oszlop1,(select hivatkozásoszlopnév from hivatkozástábla where oszlopx=érték),oszlop3 from tábla

ezzel csak az a baj, hogy a hivatkozásoszlopnévnek a nevét beírja minden sorba, de nem a neve kell minden sorban, hanem az értéke.

gugliztam, túrtam a postgre doksiját, de nem találtam, milyen szintaktika kell ehhez (vagy csak változó deklarálással megy - de akkor is hogyan ?).

Köszi a válaszokat előre is...

Milyen adatbázist használjak?

Dolgoztam már Delphi7 és Paradox valamint PHP és MySql párossal(az ms access-t nem számolom). Most egy komolyabb alkalmazáson jönne, de nem tudom mit válasszak hozzá. Még minden képlékeny, azt sem tudom Qt vagy Java legyen. Az adatbázis terén pedig a Firebird-el tényleg megbízhatóbb és jobb egy max 10-20 kliens-es környezet mint a MySql vagy PostgreSQL ?
Egy üzleti alkalmazásról lenne szó kb 50 tábla max pár ezres rekordokkal az összes rekordszám cca:100.000 bőven számolva.

Linux-on fejlesztek és csak free dolog jöhet számításba.

[szerkesztve]:
Köszönöm mindenkinek!
PostgreSQL 8.4 mellet döntöttem.

PostgreSQL és admin, user jogosultságok

Még mindig nem értem, hogy kell a jogosultságokat beállítani :(
Mindösszesen azt szeretném, hogy egy adatbázisnak legyen adminja(i) és userei. Mindkét csoportot egy konkrét adatbázisra akarom "feljogosítani", de (például) egy user ne droppolhasson mondjuk egy táblát, vagy ne hozhasson létre új felhasználót - ezek az admin dolga.
A következő műveletekhez a pgAdmin III -at használtam:
Létrehoztam (mint postgres) egy izé-admin felhasználót (role ?= felhasználó), adtam neki adatbázis create jogot, megkreaáltam (nevében) az izé-db adatbázist, majd (még mindig izé-admin -ként) létrehoztam egy izé-user felhasználót. Hol tudom neki megadni, hogy csak az izé-db hez férhet hozzá, nem kreálhat új adatbázist, nem drop se db se table, de azért használja egészséggel tehát select, insert, delete, update ...

A létrehozás után konnektáltam és mikor beleakartam nézni, csak az üres tábla definícióba, kijelentette a pgAdmin :
An error has occured:
ERROR: permission denied for relation izé-tábla

Tudtok valami értelmes dokumentumot erről, ami röviden és velősen leírná az ehhez szükséges műveleteket? Valami példa kellene. Súgjatok egy kicsit.

Lock tables, Excel ne frissíthessen táblafrissítéskor

Sziasztok!

Szeretnék kérdezni valamit:

Ha egy mysql táblát frissítek (truncate, load into, ...),
akkor sajnos közben is tudják frissíteni az
Excel kimutatásukat (amely erre a táblára kapcsolódik)
a kedves felhasználók és így gyakran félig kész adatokat látnak.

Próbáltam a "LOCK TABLES tablenev READ;" parancsot,
de sajnos így is ment a frissítés Excelből.

Ismeri valaki a problémát, no és persze a megoldását?

Köszönöm.

Joe

Gépigény ? Oracle, 2TB, 500 tabla,200usr

Kb milyen gépre tennétek:

Méret kb 2 TB, 500 tábla, max. 100 millio sor/tábla
Felhasználók (egyszerre) 200, OLTP
Oracle 10/11/.. melyiket ?
Op rendszer: Linux,Solaris, vagy egyéb ?
Proci ?, mem GB ?
HW/SW raid ? melyik kártya/diszk ?
(... éles üzembe kellene, de sok rossz tapasztalatom van a HW raid kártyákkal)
nem kell a legolcsóbb, inkább a megbízható.

koszonet