for insert
as
update t1
set t1总毛利=t2销售数量(t2销售单价-t3单价)
from 毛利表 t1,inserted t2,商品表 t3
where t1商品号=t2商品号
and t1商品号=t3商品号1.使用T-SQL语句创建触发器
创建触发器使用CREATE TRIGGER语句。 语法格式如下:
CREATE TRIGGER 触发器名ON 表名 [WITH ENCRYPTION]
FOR {[DELETE][,][INSERT][,][UPDATE] } [NOT FOR REPLICATION] AS
SQL语句
[RETURE 整数表达式]
触发器作为一种数据库对象,在syscomment 表中存储有完整的文本定义信息。可以使用WITH ENCRYPTION 对访问syscomment表的入口进行加密。
NOT FOR REPLICATION: 定义在复制过程中,不执行触发器 *** 作。 例1创建一个针对LWQK 表的触发器,打印共修改了多少行数据。
use lwzz
if exists (select name from sysobjects where name='tr_lwqk_update' and type='tr') drop trigger tr_lwqk_update go
use lwzz go
create trigger tr_lwqk_update on lwqk for update as
declare @msg varchar(100)
select @msg=str(@@rowcount)+'lwzz updated by this statement' print @msg return
go
在CREATE TRIGGER语句中不能使用SELECT语句返回对表格查询的数据,因为触发器不接受用户应用程序传递的参数,从而也无法向用户应用程序返回查询表格数据所得到的结果。 在创建触发器的语句中,禁止使用下列T-SQL语句: ALTER DATABASE ALTER PROCEDURE ALTER TABLE ALTER TRIGGER ALTER VIEW CREATE DATABASE CREATE DEFAULT CREATE INDEX CREATE PROCEDURE CREATE RULE CREATE TABLE CREATE TRIGGER DROP DATABASE DROP DEFAULT DROP INDEX DROP PROCEDURE DROP RULE DROP TABLE DROP TRIGGER DROP VIEW
GRANT RESTORE DATABASE RESTORE LOG REVOKE
TRUNCATE TABLE
由于系统表所存储数据的特殊性和重要性,所以建议用户不要自己在系统表上建立触发器。 在创建触发器时,不允许RETURN返回体现运行状态的数据。
例2创建一个当LWQK表执行INSERT、UPDATE *** 作时触发的触发器。
create trigger tr_products_insupd
on lwqk
for insert,update as
……
由于SQL Sever 支持在同一个表的同一种 *** 作类型上建立多个触发器,所以当建了tr_products_insupd触发器后,在LWQK表执行INSERT *** 作时将触发tr_products_insupd触发器,在执行UPDATE *** 作时将触发tr_product_update和tr_products_insupd触发器,他们都是有效的触发器。你可以直接用语句写呀,如:
CREATE TRIGGER [TRIGGER NAME] ON [dbo][TABLE NAME]
FOR INSERT, UPDATE, DELETE
AS
或者你用SQL SERVER的企业管理器,选中要建立触发器的表,点后键,然后选择管理触发器,这时会d出一个编辑窗口,然后自己编写触发器就OK了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)