mysql - 使用引用不同表的触发器

标签 mysql sql

我正在尝试使用触发器,以便在未选中另一个表中的 bool 值的情况下拒绝用户输入。我怎样才能做到这一点

表A

如果

TABLE B attribute1 = 0 则不允许插入

TABLE B attribute1 = 1 然后,允许插入

对 vauge 描述或零代码感到抱歉,但我不知道如何去做

最佳答案

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

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 ;

关于mysql - 使用引用不同表的触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41088468/

相关文章:

PHP mySQLi 准备失败,列重复 '?'

mysql - 从 MySQL 中的同一个表中提取父项和子项(已排序)的最有效方法是什么?

mysql - 在单个 MySQL 查询中的多个查询中选择要运行的查询

MySql 加入一对多关系 - 对于日期范围内的特定用户 ID

MySQL:列表等?

c# - 以编程方式将 JSON Web API 绑定(bind)到 MySQL 数据库 - 有现有的解决方案吗?

java - JPA。多对多创建重复的行

MySQL查看 "flattens"数据

sql - (如何)我可以在 MyBatis 的 SQL 查询中安全且与数据库无关地使用 "LIKE"吗?

java - MS SQL 异常 : Incorrect syntax near '@P0'