2016-04-25 4 views
0

Я хотел бы создать триггер для генерации ID в таблице:триггер для генерации идентификаторов

CREATE TABLE client (
    clientID INT PRIMARY KEY NOT NULL, 
    name VARCHAR(16) NOT NULL, 
    surname VARCHAR(16) NOT NULL, 
    personalID VARCHAR(10) NOT NULL, 
    CONSTRAINT verifyPersonalID CHECK ((personalID BETWEEN 1000000000 and 9999999999) and (MOD(personalID, 11) = 0)) 
); 

Я попытался написать это, но он постоянно возвращается ошибки, и я не знаю, почему. Можете ли вы, пожалуйста, дать мне совет, что я делаю неправильно?

CREATE OR REPLACE TRIGGER clientID 
AFTER INSERT 
    ON client 
    FOR EACH ROW 
BEGIN 
    UPDATE client 
    SET client.clientID = klientSeq.nextval 
    WHERE :new.personalID = client.personalID; 
END; 
/
+1

Тег dbms используется. (Этот код специфичен для продукта.) – jarlh

+0

Какова конкретная ошибка (-ы), которую вы получаете? –

ответ

1

Вы хотите Перед вставки триггера:

CREATE OR REPLACE TRIGGER klientID 
BEFORE INSERT 
    ON klient 
    FOR EACH ROW 
BEGIN 
    SELECT klientSeq.nextval INTO :new.cisloKlienta FROM dual; 
END; 
0

Может быть, вместо того, чтобы создать триггер, вы могли бы сделать по умолчанию значение первичного ключа следующего значения последовательности.

+0

Ну, к сожалению, мы должны использовать триггер. – user6056873

+0

@ user6056873 Это для класса? –

+0

Да. Мы сделали это через .nextval, но нам сказали сделать это через триггеры. – user6056873

Смежные вопросы