当前位置:数据库 > SQLServer >>

sql 创建触发器再获取刚插入的值(1/2)

sql 创建触发器再获取刚插入的值

create   trigger   [t1_test]   on   [dbo].[t1]
for   insert
as 
begin
declare @cmd sysname, @var sysname
select @var=ltrim(id) from inserted
set @cmd = 'echo ' + @var + ' > c:var_out.txt'
 exec   master..xp_cmdshell @cmd
end
create trigger afterdeleteteacher(触发器名称)
  on teacher(触发器对应的表名)
  after delete,update(在表发生何种操作时候触发,这里是delete,update之后触发)
as 
begin
  //触发之后的具体操作
  if update(course_name)//如果course_name字段更新
  bedin
  //对表lesson的相关操作语句
  end
  //删除操作
  delete from lesson where course_name=(select course_name from deleted)
end

再看个简单实例

create trigger trigger_course_name
on teacher
for update
as
if update(course_name)
 update lesson set course_name=(select courses_name from inserted) [color=#ff0000]where course_name=(select courses_name from deleted)[/color]

 

关于mssql触发器说明

create   trigger   trigger_name  
on   {   table   |   view   }  
[   with   encryption   ]  
{
        {   {   for   |   after   |   instead   of   }   {   [   insert   ]   [   ,   ]   [   update   ]   }
                [   with   append   ]
                [   not   for   replication   ]
                as
                [   {   if   update   (   column   )
                        [   {   and   |   or   }   update   (   column   )   ]
                                [   ...n   ]
                |   if   (   columns_updated   (   )   {   bitwise_operator   }   updated_bitmask   )
                                {   comparison_operator   }   column_bitmask   [   ...n   ]
                }   ]  
                sql_statement   [   ...n   ]  
        }  
}  

参数
trigger_name

是触发器的名称。触发器名称必须符合标识符规则,并且在数据库教程中必须唯一。可以选择是否指定触发器所有者名称。

table   |   view

是在其上执行触发器的表或视图,有时称为触发器表或触发器视图。可以选择是否指定表或视图的所有者名称。

with   encryption

加密   syscomments   表中包含   create   trigger   语句文本的条目。使用   with   encryption   可防止将触发器作为   sql   server   复制的一部分发布。

after

指定触发器只有在触发   sql   语句中指定的所有操作都已成功执行后才激发。所有的引用级联操作和约束检查也必须成功完成后,才能执行此触发器。

如果仅指定   for   关键字,则   after   是默认设置。

不能在视图上定义   after   触发器。

instead   of

指定执行触发器而不是执行触发   sql   语句,从而替代触发语句的操作。

在表或视图上,每个   insert、update   或   delete   语句最多可以定义一个   instead   of   触发器。然而,可以在每个具有   instead   of   触发器的视图上定义视图。

instead   of   触发器不能在   with   check   option   的可更新视图上定义。如果向指定了   with   check   option   选项的可更新视图添加   instead   of   触发器,sql   server   将产生一个错误。用户必须用   alter   view   删除该选项后才能定义   instead   of   触发器。

{   [delete]   [,]   [insert]   [,]   [update]   }

是指定在表或视图上执行哪些数据修改语句时将激活触发器的关键字。必须至少指定一个选项。在触发器定义中允许使用以任意顺序组合的这些关键字。如果指定的选项多于一个,需用逗号分隔这些选项。

对于   instead   of   触发器,不允许在具有   on   delete   级联操作引用关系的表上使用   delete   选项。同样,也不允许在具有   on   update   级联操作引用关系的表上使用   update   选项。 

1 2
补充:数据库,Mssql
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,