2016-04-25 37 views
0

我想在表中生成ID創建觸發器:觸發生成的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

你想要一個 INSERT觸發器:

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