Sql server 在SQL Server中执行默认操作';什么是触发器?

Sql server 在SQL Server中执行默认操作';什么是触发器?,sql-server,triggers,sql-server-2008-r2,Sql Server,Triggers,Sql Server 2008 R2,在INSTEAD OF触发器中是否有一种方法可以导致默认操作 例如,编写如下查询: BEGIN IF <some rule> BEGIN ROLLBACK EXIT END /* Long, boring, DDL dependant query ... INSERT INTO ... ... ... ... ... ... -_-' */ // A simple s

在INSTEAD OF触发器中是否有一种方法可以导致默认操作

例如,编写如下查询:

BEGIN

    IF <some rule>
    BEGIN
        ROLLBACK
        EXIT
    END

    /* Long, boring, DDL dependant query ...
    INSERT INTO
    ...
    ... ...
    ... ... ... -_-'
    */

    // A simple statement that does the job!!
    <default insertion> 
END
开始
如果
开始
回降
出口
终止
/*冗长、无聊、依赖DDL的查询。。。
插入
...
... ...
... ... ... -_-'
*/
//一个简单的语句就可以完成任务!!
终止

我的目标是检查一些业务规则,并且仅当检查通过insert(或update/delete)时,而不必重写整个语句,如果表的结构发生变化,整个语句就会中断。

通常不会。在一些普通情况下,您可以使用
*
而不是列出字段,但你可能无论如何都不应该这么做

SQL不是一种面向对象的语言或环境,也不具有与它们相同的代码可重用性级别。因此,在许多常见情况下,正确的做法是重复的,甚至是多余的。简而言之,DRY并不总是适用于SQL


特别是,它几乎从不适用于DDL更改的影响。因此,对于DDL更改,最好接受正确代码的编辑敏感度总是大于1。您只需要在多个地方更改内容。

您可以从触发器调用(执行)SP。您确定不能以某种声明方式实现
,这样就不必编写触发器了吗?正在检查所有行(现有+插入)中是否没有日期重叠的两行。如果我使用CHECK+user函数执行此操作,它将导致RBAR(据我所知)。@HamletHakobyan如果我调用进行插入的SP,SQL Server将抱怨-而不是触发器不支持直接递归。触发器执行失败。在哪里可以看到递归?