使用引用不同表的触发器

时间:2016-12-11 16:38:18

标签: mysql sql

我正在尝试使用触发器,以便在未选中另一个表中的布尔值时拒绝用户输入。我怎么能这样做

TABLE A

如果

TABLE B attribute1 = 0 then, don't allow insert

TABLE B attribute1 = 1 then, allow insert

对于vauge描述或零代码感到抱歉,但我不知道该怎么做

1 个答案:

答案 0 :(得分:1)

这应该给你一个起点。根据您的架构调整表名称和条件。

delimiter //

CREATE TRIGGER DENY_IF_TRUE 
BEFORE INSERT ON [your table] FOR EACH ROW 
BEGIN
    DECLARE attr BOOLEAN;

    -- 'set variable to attribute value
    set @attr := (SELECT attribute FROM [your other table] WHERE [some condition] LIMIT 1);

    IF @attr = TRUE THEN
        -- 'this will make the trigger fail and therefore avoid the insert operation succeed'
        CALL non_existent_function();
    END IF;
END;

delimiter ;