Mysql 用于比较其他表值的DB table约束

Mysql 用于比较其他表值的DB table约束,mysql,mariadb,Mysql,Mariadb,假设我有两张桌子: 表1(id、名称、类型(枚举-主、子)) 表2(id、名称、表1_id(英国,参考表1 id)) 在表2中插入时,仅当“name”等于“main”时,才能插入 我能在表2中定义约束吗 如果是,我将如何做?是否有帮助?应仅在“名称”等于“主要”时才能插入。你是说table.type='main'?否。检查约束只能测试当前记录,不能引用其他记录或其他表。只有触发逻辑。@Akina,好的。约束仅适用于当前记录。触发器的性能如何?我发现这是一个令人困惑的问题。无法使用表2中的FK将名

假设我有两张桌子:

表1(id、名称、类型(枚举-主、子))

表2(id、名称、表1_id(英国,参考表1 id))

在表2中插入时,仅当“name”等于“main”时,才能插入

我能在表2中定义约束吗


如果是,我将如何做?

是否有帮助?应仅在“名称”等于“主要”时才能插入。你是说
table.type='main'
?否。检查约束只能测试当前记录,不能引用其他记录或其他表。只有触发逻辑。@Akina,好的。约束仅适用于当前记录。触发器的性能如何?我发现这是一个令人困惑的问题。无法使用表2中的FK将名称限制为“main”(或者以另一种方式查看表1中类型的子集。如果希望名称限制为main或sub,则可以通过在名称引用类型上创建FK来实现。如果不是这样,则必须枚举名称或创建触发器。使用触发器的性能如何?使用触发器的性能比不使用触发器的性能更差。)装配工。更糟糕的是——一个实际测试将证明这一点。