gpt4 book ai didi

sql - 何时在 SQL 插入中检查表约束?

转载 作者:行者123 更新时间:2023-11-29 13:42:06 25 4
gpt4 key购买 nike

假设我有一个触发器,如果​​不满足给定条件,它应该阻止将某些内容插入表中。这意味着我可能应该使用 BEFORE INSERT。这是正确的吗?

但是如果我使用 BEFORE INSERT,当我在触发器上运行该函数时,将不会检查完整性约束。所以他们可能会违反约束(比如非空约束)。这样做的主要问题是我可能会尝试对无效数据进行操作。

有没有一种方法可以强制检查约束,然后运行触发器,而无需先实际向表中插入内容?

最佳答案

不清楚您所说的尝试使用无效数据进行操作的危险是什么意思。

如果您在 BEFORE 触发器中遇到异常,因为您正在那里执行操作(例如,被约束排除的除以零),则触发器和整个INSERT 将被中止,就好像约束稍后会抛出异常一样。所以没有什么可担心的。

另一方面,如果您希望在执行检查之前检查约束,只需在 AFTER 触发器中执行检查即可。在那里抛出异常也会中止插入。

如果两者都有效,请选择 BEFORE 触发器。如果在插入行之前抛出异常,则肯定不会生成死元组。

关于sql - 何时在 SQL 插入中检查表约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53746591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com