如何解决有条件地插入表的方法MariaDB
这个问题涉及如何处理表中的条件插入。
假设我们的客户和员工。 一个客户一次只能分配4名员工。 我们待会儿会再谈这个。
在数据库级别,我们有检查和触发器。
在MariaDB中,CHECK约束不能有子查询,因此我们不能施加约束 以这种方式参与的程度。例如,我们不能说些什么 喜欢
CHECK ( customer_id IN (SUBQUERY that returns count of Employees with == 4 employees) )
。
触发器可能是解决方案。 插入或更新)。如果经理试图将客户分配给已经有4个客户的员工,则我们不应允许将该记录插入到将客户与其员工链接的表中。在这种情况下,我们希望触发器在插入之前起作用。我们只想要 如果该员工不在列出的子查询中,则会发生插入 有4个客户的员工。
我们想停止插入,但是根据法律,触发器不会执行此操作 基于仅在触发器中陈述的条件。据我了解,唯一的方法就是发送信号(请看Use a trigger to stop an insert or update
这导致了我接下来的两个问题。
使用信号“理想”吗?有问题吗?有没有更好的方法插入表格 基于条件,而不是仅仅在出现副作用之前 插入还是在插入之后?
如果一开始违反约束条件,db似乎会发送信号,那么这是否会影响在其之上构建的应用程序?
解决方法
一些克制可以解决:
INSERT INTO TABLE (a,b,c)
SELECT ...
WHERE <-- put the logic here (if possible)
也就是说,根据您的业务逻辑安排SELECT
传递更多或更少的行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。