| | |
| Stránka: 1 z 1
| [ Príspevkov: 9 ] | |
Autor | Správa |
---|
Registrovaný: 30.03.10 Prihlásený: 28.11.10 Príspevky: 14 Témy: 6 | Napísal a13: 07.04.2010 15:31 | |
|
vytvorenie tabulky
=============================================
Kód: create table furniture( furniture# varchar2(5) constraint pk_furniture# primary key, furniture_name varchar2(30) not null, material varchar2(4) constraint material_check check (material in ('oak', 'ash', 'pine')), length number not null, depth number not null, height number not null, price number not null, volume number ); spustenie triggeru ktory by MAL updatnut VOLUME ale zial neupdatne ========================================= Kód: CREATE OR REPLACE TRIGGER update_volume BEFORE INSERT OR UPDATE ON furniture FOR EACH ROW BEGIN UPDATE furniture SET volume = height * depth * length WHERE furniture# = :new.furniture#; END; / a nakoniec vlozim data ========================================= Kód: INSERT INTO furniture (furniture#, furniture_name, material, length, depth, height, price, volume) VALUES ('F0001', 'Large square cushion', 'oak', '180', '70', '70', '500','');
Problem je v tom ze ked si pozrem ci tabulka obsahuje volume ktore som vypocital v triggery ako vyska* sirka*hlbka tak to pole je prazdne pretoze zrejme ho prepise pri inserte kde vkladam prazdny retazec, ale v skutocnosti by tam malo byt volume(objem). Serem sa s tym 2 hodiny ale nejako to nechce pocitat .... Nejaka rada co robim zle?
CHCEM ABY MY TABULKA OBSAHOVALA POLICKO VOLUME KTORE JE PRAZDNE, CIZE CHCEM ABY PRI VKLADANI SA AUTOMATICKY VYPOCITAL OBJEM PODLA VYSKY SIRKY HLBKY CO VSAK NEFUNGUJE
//zdrojak patri do code! (stenley)
|
|
Registrovaný: 01.04.10 Prihlásený: 08.10.11 Príspevky: 339 Témy: 0 | Napísal Forty-: 07.04.2010 15:43 | |
|
potrebujes after insert, nie before
edit :
alebo si sprav proceduru na insert, ktora to uz rovno zrata na zaklade parametrov a vkladaj pomocou procedury (teda procedura spravi insert az na konci kde uz bude poznat tvoj objem a navyse mozes osetrit vstupy a vyskocit z nej keby bolo nieco nespravne)
|
|
Registrovaný: 30.03.10 Prihlásený: 28.11.10 Príspevky: 14 Témy: 6 | Napísal autor témy a13: 07.04.2010 15:57 | |
|
forty GJGT? Mozes mi to rovno napisat pretoze uz sa serem s tym dost dlho a poradim ti ze to nieje after ale je to naozaj before....
|
|
Registrovaný: 29.10.07 Prihlásený: 27.10.23 Príspevky: 1395 Témy: 30 Bydlisko: Bratislava |
After alebo before.... vseobecne
Mozes tam mat jedno aj druhe, otazne je ci chces akciu vykonat pred, alebo po vlozeni zaznamu. Ak tam mas before (akoze aj mas), tak neupdatujes nic, lebo zaznam v tabulke este nie je.
_________________ PC: OS: Windows 11 (64bit) CPU: AMD Ryzen 5 3600 GPU: ASUS TUF RTX3060Ti 8GB RAM: 16GB DDR4-3200MHz Kingston Fury MB: ASUS TUF Gaming B550M WIFI SSD: 1000GB PCIe M.2 NVME Mobil: Xiaomi POCO F2 PRO |
|
Registrovaný: 30.03.10 Prihlásený: 28.11.10 Príspevky: 14 Témy: 6 | Napísal autor témy a13: 07.04.2010 16:13 | |
|
vy tu chodite okolo horucej kase , nechcem byt zly ale uz mam nervy pretoze vsetko mi funguje a vsetko slo hladko ale tu som stravil uz asi 3-4hodiny tym ze je tam mala chyba ... a neviem ju najst skusil som uz asi 350variacii ako to napisat ale nejde to ani jedno ... prosim bude niekto taky laskavy a NAPISAL SEM PRESNY KOD velmi mu budem vdacny velmi velmi ale uz mam nervy pri kraji a asi si to skocim
|
|
Registrovaný: 01.04.10 Prihlásený: 08.10.11 Príspevky: 339 Témy: 0 | Napísal Forty-: 07.04.2010 16:21 | |
|
a13 píše: forty GJGT? Mozes mi to rovno napisat pretoze uz sa serem s tym dost dlho a poradim ti ze to nieje after ale je to naozaj before....
Cau Peto, riadna nahoda )
No momentalne nemam ziadne Oracle server :-((
Ale este skus par veci :
1. ten trigger vytvor este pred prvym insertom
2. pozeram svoje stare triggre a z nejakeho dovodu pouzivam vsade zatvorky napr. Kód: SET vyska_konta = (vyska_konta + :new.suma) , skus
3. ja som mal taketo triggre vsade AFTER, skus predsalen
4. a nad tou procedurou si rozmyslal? Lebo by to bolo easy, ja triggre pouzivam len ked vyslovene musim
|
|
Registrovaný: 30.03.10 Prihlásený: 28.11.10 Príspevky: 14 Témy: 6 | Napísal autor témy a13: 07.04.2010 16:45 | |
|
Jo jo cus trigger musim pouzit zial je to v zadani, skusil som aj before aj after aj zatvorky nezatvorky :new aj :old a stale mi to tak pride ze ten trigger ani nefunguje ....
|
|
Registrovaný: 01.04.10 Prihlásený: 08.10.11 Príspevky: 339 Témy: 0 | Napísal Forty-: 07.04.2010 17:13 | |
|
A pusti sa vobec? :/
Pridaj Kód: dbms_output.put_line(new.furniture)
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 15.04.2010 9:30 | |
|
Kód: CREATE OR REPLACE TRIGGER update_volume BEFORE INSERT OR UPDATE ON furniture FOR EACH ROW BEGIN :new.volume := :new.height * :new.depth * :new.length; END;
|
|
| Stránka: 1 z 1
| [ Príspevkov: 9 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|