Регистрирайте се безплатно, за да използвате услугите на сайта! | Вход
Начало Новини ИТ Работа Форум Видео Уроци Скриптове WiFi точки MyLinks Mytech Още


Нова тема
проблем с триггер и автоинкрементиращ се ключ
Тази тема е погледната 283 пъти
Добави темата към любими | Принтирай темата | Нова тема 
Публикувано на: 17.07.2008 17:09
ill_nin0
Чирак

Мнения: (9)

Здравейте,тъйкато досега не съм се занимавал със SQL  програмиране,а ми се наложи,тези дни съм като в небрано лозе.
значи проблема е следния.трябва да си направя тригерче,което ми генерира ключовете в таблица.доста търсих във гоогле-то но това,на което попаднах,ми дава грешка,която не мога да оправя


CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
DROP TABLE users;
/
DROP SEQUENCE seq;
/


/
CREATE SEQUENCE seq
START WITH 1
INCREMENT BY 1
NOMAXVALUE;
/
CREATE TABLE users(
 
iduser NUMBER  PRIMARY KEY ,
 
usrname VARCHAR(20) NOT NULL UNIQUE,
 
usrpass VARCHAR(20) NOT NULL,
 
fullname VARCHAR(40) NOT NULL,
 
lastlogin DATE NOT NULL
 
);
/
CREATE OR REPLACE TRIGGER trigg
BEFORE INSERT ON 
users
FOR EACH ROW
BEGIN
SELECT
seq.nextval
INTO : new.iduser
FROM dual
;
END;


/
ALTER TRIGGER TRIGG ENABLE;
/
DROP TABLE USERS;
/

CREATE TABLE users(
 
iduser NUMBER  PRIMARY KEY ,
 
usrname VARCHAR(20) NOT NULL UNIQUE,
 
usrpass VARCHAR(20) NOT NULL,
 
fullname VARCHAR(40) NOT NULL,
 
lastlogin DATE NOT NULL
 
);
/
/
INSERT INTO USERS(usrpass, usrname, fullname, lastloginVALUES ('PE6O','PE6OPASS','PE6O PE6OV',DATE '2006-10-11');
/
INSERT INTO USERS(usrpass, usrname, fullname, lastlogin)   VALUES ('KIRO','KIROPASS','KIRO KIROV',DATE '2006-12-11');

грешката която ми дава е
CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Error starting at line 46 in command:
INSERT INTO USERS(usrpass, usrname, fullname, lastloginVALUES ('PE6O','PE6OPASS','PE6O PE6OV',DATE '2006-10-11')
Error report:
SQL Error: ORA-01400: cannot insert NULL into ("LECTURE3"."USERS"."IDUSER")
01400. 00000"cannot insert NULL into (%s)"
*Cause:   
*Action:

Error starting at line 48 in command:
INSERT INTO USERS(usrpass, usrname, fullname, lastlogin)   VALUES ('KIRO','KIROPASS','KIRO KIROV',DATE '2006-12-11')
Error report:
SQL Error: ORA-01400: cannot insert NULL into ("LECTURE3"."USERS"."IDUSER")
01400. 00000"cannot insert NULL into (%s)"
*Cause:   
*Action:

явно това тригерче,въобще не се стартира,за да ми дава такава грешка,въпроса е защо.

предварително благодаря


 
---------------------------
Потребител от: 11.05.08 | Всички уроци от ill_nin0 | Всички скриптове от ill_nin0
напиши eMail напиши лично съобщение виж профила на ill_nin0
Публикувано на: 17.07.2008 20:41
Mutatos
Император

Администратор

Мнения: (1338)

Здрасти, сигурен ли си че трябва да се задава това DATE при заявката. На мен ми намирисва на някаква грешка:

Напиши вместо това:

CODE
1
INSERT INTO USERS(usrpass, usrname, fullname, lastloginVALUES ('PE6O','PE6OPASS','PE6O PE6OV',DATE '2006-10-11');

Това:

CODE
1
INSERT INTO USERS(usrpass, usrname, fullname, lastloginVALUES ('PE6O','PE6OPASS','PE6O PE6OV','2006-10-11');

Поздрави!


 
---------------------------
Потребител от: 18.04.04 | Всички уроци от Mutatos | Всички скриптове от Mutatos

Търся за почасова надомна работа преводачи от английски език за превод на материали от IT сферата - новини, уроци ...!
напиши eMail напиши лично съобщение виж профила на Mutatos
Публикувано на: 18.07.2008 01:19
ill_nin0
Чирак

Мнения: (9)

мерси,оправих се.проблема идваше от 26-тия ред,където двуеточието трябва да е точно до new,знаех си че става върпсо за някаква малка такава грешка.тези две точки бая часове ми загубиха :)


 
---------------------------
Потребител от: 11.05.08 | Всички уроци от ill_nin0 | Всички скриптове от ill_nin0
напиши eMail напиши лично съобщение виж профила на ill_nin0
Публикувано на: 18.07.2008 02:27
gomaker
Калфа

Мнения: (28)

Не съм убеден, че това е грешката, но щом казваш?!?

Между другото, забеляза ли, че usrpass=PE6O, a usrname=PE6OPASS?

Имаш разменени колони в INSERT.


 
---------------------------
Потребител от: 15.01.08 | Всички уроци от gomaker | Всички скриптове от gomaker
напиши eMail напиши лично съобщение виж профила на gomaker
Публикувано на: 18.07.2008 08:53
Mutatos
Император

Администратор

Мнения: (1338)

Искаш да кажеш, че без да променяш заявката всичко сеоправи, само като сложи някакви си две точки?!? Не мога да повярвам ... да наистина имаш разместване на  полетата в заявката

Поздрави!


 
---------------------------
Потребител от: 18.04.04 | Всички уроци от Mutatos | Всички скриптове от Mutatos

Търся за почасова надомна работа преводачи от английски език за превод на материали от IT сферата - новини, уроци ...!
напиши eMail напиши лично съобщение виж профила на Mutatos
Публикувано на: 18.07.2008 10:49
ill_nin0
Чирак

Мнения: (9)

оправи се грешката която ме тормозеше толкова време,а именно,че тригера не искаше да работи. и не можех да разбера от къде идва и заради това почнах да променям всичко по кода,което е  и причината да изглежда толкова зле.другите проблеми са бели кахъри и се оправят лесно.аз кода си го пренаписах на ново и както трябва,без да бъркам заявките и т.н но тръгна едва когато си оправих точките


 
---------------------------
Потребител от: 11.05.08 | Всички уроци от ill_nin0 | Всички скриптове от ill_nin0
напиши eMail напиши лично съобщение виж профила на ill_nin0
 1 посетител чете тази тема (0 потребители и 1 гост)  
Активни потребители: ---
   




mytech.bg © 2004 - 2009 | Контакти | За реклама