我有一個關于我想創建的觸發器的問題,但我不確定如何執行此操作。
我有一個表,2017_state_data,它包含每個州的一些財務指標以及所述州名。現在重要的是狀態名稱始終正確(并且狀態當然存在),我想創建一個觸發器,如果??“狀態”的值與狀態名稱(來自另一個表)不一致,那么它應該沿著“條目中的未知狀態”給出警告訊息。我不完全確定如何參考不同表中的列以在觸發器中使用,我希望有人可以幫助我。
我創建的觸發器在下面,但這不起作用并給我留下“不完整的輸入”錯誤。
CREATE TRIGGER sureState
BEFORE INSERT ON 2017_state_data
FOR EACH ROW
WHEN NEW.State != (SELECT StateName FROM States)
BEGIN SELECT RAISE(ABORT, "Unknown state in entry")
END;
在此先感謝您的幫助。
uj5u.com熱心網友回復:
您的要求有一個名稱,它是參照完整性。
您所要做的就是定義State表的列,2017_state_data以便它參考StateName表的列States:
CREATE TABLE 2017_state_data (
........................
State TEXT REFERENCES States(StateName),
........................
);
現在,如果您啟用外鍵支持(默認情況下禁用):
PRAGMA foreign_keys = ON;
您確保沒有不存在的StateName值可以輸入State并且不需要觸發器。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/311415.html
