我有一个关于触发器的问题,我想创建,我不知道如何做到这一点。
我有一个表2017_state_data,它包含每个州的一些财务指标以及所述州名。现在重要的是,状态名总是正确的(当然,状态存在),我想创建一个触发器,如果" state "的值如果不符合状态名称(来自另一个表),那么它应该沿着"entry"未知状态"的行给出警告消息。我不完全确定如何从不同的表中引用列用于触发器,我希望有人能帮助我。
我创建的触发器在下面,但这不起作用,给我留下了一个"不完整的输入"。错误。
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;
提前感谢你的帮助。
您的需求有一个名称,它是参考完整性
您所要做的就是定义表2017_state_data
的列State
,使其引用表States
的列StateName
:
CREATE TABLE 2017_state_data (
........................
State TEXT REFERENCES States(StateName),
........................
);
现在,如果您启用外键支持(默认禁用):
PRAGMA foreign_keys = ON;
你确保没有价值,不存在可以输入StateName
State
和没有需要触发。