Sql 用于防止根据条件插入数据的触发器

Sql 用于防止根据条件插入数据的触发器,sql,sql-server,tsql,triggers,Sql,Sql Server,Tsql,Triggers,我需要一个触发器,在像下面这样插入表中的任何行之前,防止一些数据根据条件插入表中 create Trigger trigger_name on table_name for insert AS Begin if (true) insert into table_name values () End 代替触发器(使用代替子句) 此类型的触发器在SQL Server开始执行之前激发 激发它的行动。这与后触发器不同,后者 在导致其着火的操作之后发生火灾。我们可以换一个房间 在成功执行的表上

我需要一个触发器,在像下面这样插入表中的任何行之前,防止一些数据根据条件插入表中

create Trigger trigger_name 
on table_name
for insert
AS
Begin
if (true)
    insert into table_name values ()
End

代替触发器
(使用代替子句)

此类型的触发器在SQL Server开始执行之前激发 激发它的行动。这与后触发器不同,后者 在导致其着火的操作之后发生火灾。我们可以换一个房间 在成功执行的表上插入/更新/删除触发器的 但不包括对表的实际插入/更新/删除

语法:

CREATE TRIGGER trigger_nameON {table|view} 
[WITH ENCRYPTION|EXECUTE AS] 
{FOR|AFTER|INSTEAD OF} 
{[CREATE|ALTER|DROP|INSERT|UPDATE|DELETE ]} 
[NOT FOR REPLICATION] 
AS sql_statement [1...n ] 
触发器应该是这样的

CREATE TRIGGER trigger_name 
ON table_name 
instead OF INSERT 
AS 
    BEGIN 
        IF (true) 
            INSERT INTO table_name VALUES () 
    END
使用和运算符验证满足条件的行

CREATE TRIGGER trigger_name
ON table_name
Instead OF INSERT
AS
  BEGIN
      INSERT INTO table_name
      SELECT *
      FROM   inserted
      WHERE  EXISTS (SELECT 1
                     WHERE  condtion = true)
  END 

您是否尝试使用检查约束而不是触发器? 这是他们的目的。应用简单条件以防止插入/更新不符合业务逻辑的数据


请不要在网络中的多个站点上发布相同的问题。这是。还有:你试过什么?您需要提供更多的细节,例如是否需要对每行计算此条件。许多人错误地认为触发器是每行触发的,而实际上它是每语句触发的,并且一个语句可以影响多行。因此,是否要插入符合条件的行,并放弃不符合条件的行?或者检查条件,如果为真,则插入所有行;如果为非真,则不插入行?