任何人都可以解释(或建议一个站点或论文)触发器,断言和检查之间的确切区别,也描述我应该在哪里使用它们吗?
编辑:我的意思是在数据库中,而不是在任何其他系统或编程语言中。
触发器 -触发器是在数据库中更新,插入或删除之前或之后执行的一条SQL。用简单的英语触发的示例可能类似于:在更新客户记录之前,保存当前记录的副本。看起来像这样:
CREATE TRIGGER triggerName AFTER UPDATE INSERT INTO CustomerLog (blah, blah, blah) SELECT blah, blah, blah FROM deleted
断言和检查之间的区别更加模糊,许多数据库甚至不支持断言。
检查约束 -检查是一条SQL,可确保在对记录采取操作之前满足条件。用简单的英语来说就是这样:所有客户的帐户余额必须至少为100美元。看起来像这样:
ALTER TABLE accounts ADD CONSTRAINT CK_minimumBalance CHECK (balance >= 100)
任何试图在余额列中插入小于100的值的操作都会引发错误。
断言 -断言是一段SQL,可确保满足条件或停止对 数据库对象 采取的 操作 。这可能意味着锁定整个表甚至整个数据库。
更令人困惑的是,可以使用触发器来强制执行检查约束,并且在某些DB中可以代替断言(通过允许您运行与要修改的表无关的代码)。对于初学者来说,常见的错误是在需要触发器时使用检查约束,或者在需要检查约束时使用触发器。
例如:所有新开户的客户都必须有100美元的余额;但是,一旦开户,其余额可能会低于该金额。在这种情况下,您必须使用触发器,因为您只希望在插入新记录时评估条件。