Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Trigger
cinnek
post
Post #1





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 3.12.2003

Ostrzeżenie: (0%)
-----


Witam

Tworze takiego triggera:

[sql:1:a4d5732cbe]
create or replace trigger trr_opiekunowie
before insert on opiekunowie
for each row
begin
if :new.o_id is null then
select licznik.nextval into :new.o_id from dual;
end if;
end;
/
[/sql:1:a4d5732cbe]

ten triger to cos wrodzaju autoimcrement w mySqlu
i niestety robiąc inserta ,takiego gdzie w miejscu o_id mam NULL dostaje błędy:

ORA-06502: PL/SQL: numeric or value error: number precision too large
ORA-06512: at "DIVINF_12_7.TRR_OPIEKUNOWIE", line 3
ORA-04088: error during execution of trigger 'DIVINF_12_7.TRR_OPIEKUNOWIE'


Czy może ktos wie dlaczego

aha licznik tworze tak:
[sql:1:a4d5732cbe]
create sequence licznik minvalue 0 maxvalue 9999 increment by 1 start with 5;[/sql:1:a4d5732cbe]
Go to the top of the page
+Quote Post
bartmag
post
Post #2





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 1.04.2004
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


Cytat(cinnek @ 2004-05-22 14:01:05)
...

ORA-06502: PL/SQL: numeric or value error: number precision
...

maxvalue 9999

Nie mam konsoli Oracla teraz pod ręką, ale popatrz na to i pokombinuj z tą wartością 9999.
Go to the top of the page
+Quote Post
modzel
post
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 21.10.2004

Ostrzeżenie: (0%)
-----


a po co ten select (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
nie lepiej
Kod
:new:=licznik.nextval;
Go to the top of the page
+Quote Post
Method
post
Post #4





Grupa: Zarejestrowani
Postów: 177
Pomógł: 6
Dołączył: 14.01.2003
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


a wiesz ostnieje takie cos fajnego co sie sekwencje zwie
on ci zapewni autoincrement chodz tak z najnowszych trednow - gdzies wyczytalem nie chcacy to sie nie robi juz incrementacji na ID z poziomu bazy tylko sie daje timestampa z milisek. - podobno szybsze.
Ja jednak uzywam sequence
Go to the top of the page
+Quote Post
SongoQ
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

Ostrzeżenie: (0%)
-----


Cytat
to sie nie robi juz incrementacji na ID z poziomu bazy tylko sie daje timestampa z milisek

Hm tak sie zastanawiam, czy przypadkiem nie bedzie 2 takich samych, bazki rozproszone itd.

A odnosnie pytania troche dziwna sprawa, skladne masz ok.

Wydaje mi sie ze cos typ pola nie jest zgodny z sekwencja.
Sprawdz tak:
create sequence licznik minvalue 0 maxvalue 1.0E28 increment by 1 start with 5;
bo tak wstawia chyba domyslnie.

Ten post edytował SongoQ 27.06.2005, 09:23:07
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.08.2025 - 18:07