创建不允许不在另一列中的值的触发器



我有一个关于触发器的问题,我想创建,我不知道如何做到这一点。

我有一个表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;

你确保没有价值,不存在可以输入StateNameState和没有需要触发。

最新更新