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 选项。
补充:数据库,Mssql