触发器格式 用友u8中途增加货位

SQL触发器语法  语法  CREATE TRIGGER trigger_name  ON { table | view }  [ WITH ENCRYPTION ]  {  { { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ DELETE ] [ UPDATE ]}  [ WITH APPEND ]  [ NOT FOR REPLICATION ]  AS  [ { IF UPDATE ( column )  [ { AND | OR } UPDATE ( column ) ]  [ ...n ]  | IF ( COLUMNS_UPDATED ( ) updated_bitmask )  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 CHECKOPTION 选项的可更新视图添加 INSTEAD OF 触发器,SQL Server 将产生一个错误。用户必须用 ALTERVIEW 删除该选项后才能定义 INSTEAD OF 触发器。  { [DELETE] [,] [INSERT] [,] [UPDATE] }  是指定在表或视图上执行哪些数据修改语句时将激活触发器的关键字。必须至少指定一个选项。在触发器定义中允许使用以任意顺序组合的这些关键字。如果指定的选项多于一个,需用逗号分隔这些选项。  对于 INSTEAD OF 触发器,不允许在具有 ON DELETE 级联操作引用关系的表上使用 DELETE选项。同样,也不允许在具有 ON UPDATE 级联操作引用关系的表上使用 UPDATE 选项。  WITH APPEND  指定应该添加现有类型的其它触发器。只有当兼容级别是 65 或更低时,才需要使用该可选子句。如果兼容级别是 70 或更高,则不必使用WITH APPEND 子句添加现有类型的其它触发器(这是兼容级别设置为 70 或更高的 CREATE TRIGGER的默认行为)。有关更多信息,请参见 sp_dbcmptlevel。  WITH APPEND 不能与 INSTEAD OF 触发器一起使用,或者,如果显式声明 AFTER触发器,也不能使用该子句。只有当出于向后兼容而指定 FOR 时(没有 INSTEAD OF 或 AFTER),才能使用 WITHAPPEND。以后的版本将不支持 WITH APPEND 和 FOR(将被解释为 AFTER)。  NOT FOR REPLICATION  表示当复制进程更改触发器所涉及的表时,不应执行该触发器。  AS  是触发器要执行的操作。  sql_statement  是触发器的条件和操作。触发器条件指定其它准则,以确定 DELETE、INSERT 或 UPDATE 语句是否导致执行触发器操作。  当尝试 DELETE、INSERT 或 UPDATE 操作时,Transact-SQL语句中指定的触发器操作将生效。  触发器可以包含任意数量和种类的 Transact-SQL语句。触发器旨在根据数据修改语句检查或更改数据;它不应将数据返回给用户。触发器中的 Transact-SQL语句常常包含控制流语言。CREATE TRIGGER 语句中使用几个特殊的表:  * deleted 和 inserted是逻辑(概念)表。这些表在结构上类似于定义触发器的表(也就是在其中尝试用户操作的表);这些表用于保存用户操作可能更改的行的旧值或新值。例如,若要检索deleted 表中的所有值,请使用:  SELECT *  FROM deleted  * 如果兼容级别等于 70,那么在 DELETE、INSERT 或 UPDATE 触发器中,SQL Server 将不允许引用inserted 和 deleted 表中的 text、ntext 或 image 列。不能访问 inserted 和 deleted表中的 text、ntext 和 image 值。若要在 INSERT 或 UPDATE 触发器中检索新值,请将 inserted表与原始更新表联接。当兼容级别是 65 或更低时,对 inserted 或 deleted 表中允许空值的text、ntext 或image 列,将返回空值;如果这些列不可为空,则返回零长度字符串。  当兼容级别是 80 或更高时,SQL Server 允许在表或视图上通过 INSTEAD OF 触发器更新 text、ntext或 image 列。  n  是表示触发器中可以包含多条 Transact-SQL 语句的占位符。对于 IF UPDATE (column) 语句,可以通过重复UPDATE (column) 子句包含多列。  IF UPDATE (column)  测试在指定的列上进行的 INSERT 或 UPDATE 操作,不能用于 DELETE 操作。可以指定多列。因为在 ON子句中指定了表名,所以在 IF UPDATE 子句中的列名前不要包含表名。若要测试在多个列上进行的 INSERT 或 UPDATE操作,请在第一个操作后指定单独的 UPDATE(column) 子句。在 INSERT 操作中 IF UPDATE 将返回 TRUE值,因为这些列插入了显式值或隐性 (NULL) 值。  说明 IF UPDATE (column) 子句的功能等同于 IF、IF...ELSE 或 WHILE 语句,并且可以使用BEGIN...END 语句块。有关更多信息,请参见控制流语言。  可以在触发器主体中的任意位置使用 UPDATE (column)。  column  是要测试 INSERT 或 UPDATE 操作的列名。该列可以是 SQL Server支持的任何数据类型。但是,计算列不能用于该环境中。有关更多信息,请参见数据类型。  IF (COLUMNS_UPDATED())  测试是否插入或更新了提及的列,仅用于 INSERT 或 UPDATE 触发器中。COLUMNS_UPDATED 返回varbinary 位模式,表示插入或更新了表中的哪些列。  COLUMNS_UPDATED函数以从左到右的顺序返回位,最左边的为最不重要的位。最左边的位表示表中的第一列;向右的下一位表示第二列,依此类推。如果在表上创建的触发器包含8 列以上,则 COLUMNS_UPDATED 返回多个字节,最左边的为最不重要的字节。在 INSERT 操作中COLUMNS_UPDATED 将对所有列返回 TRUE 值,因为这些列插入了显式值或隐性 (NULL) 值。  可以在触发器主体中的任意位置使用 COLUMNS_UPDATED。  bitwise_operator  是用于比较运算的位运算符。  updated_bitmask  是整型位掩码,表示实际更新或插入的列。例如,表 t1 包含列 C1、C2、C3、C4 和 C5。假定表 t1 上有 UPDATE触发器,若要检查列 C2、C3 和 C4 是否都有更新,指定值 14;若要检查是否只有列 C2 有更新,指定值 2。  comparison_operator  是比较运算符。使用等号 (=) 检查 updated_bitmask 中指定的所有列是否都实际进行了更新。使用大于号(>) 检查 updated_bitmask 中指定的任一列或某些列是否已更新。  column_bitmask

  是要检查的列的整型位掩码,用来检查是否已更新或插入了这些列。

小实例

create trigger trlone on card for update
as
if update(id)
触发器格式 用友u8中途增加货位
begin
update user1 set cardid=(select id from inserted)
where cardid=(select id from deleted)
end
update card set id='6' where id='1'
==========================================

create trigger trlone on card for delete
as
delete user1 from user1 u, deleted d
where u.cardid=d.id
delete card where id='1'
================================

create trigger trlone on card for insert
as
begin
insert into user1 (id,[name])
select id,[name] from inserted
end
insert into card (id,[name])values(23,12)
select * from user1
--declare @id int,@name nvarchar(50)
--select @id=id,@name=[name] inserted
--insert into user1(id,[name])values(@id,@name)
===============
create trigger trlone on card for insert
as
begin
declare @id int,@name nvarchar(50)
select @id=id,@name=[name] from inserted
insert into user1(id,[name]) values(@id,@name)
end
insert into card(id,[name]) values('13','13')

  

爱华网本文地址 » http://www.413yy.cn/a/25101017/328857.html

更多阅读

用友U8操作教程:97 反结账(取消结账)

用友U8操作教程:[97]反结账(取消结账)——简介本系列经验将以一个单位的经济业务详细介绍用友U8 V10.1软件的操作步骤。涉及到的板块有系统管理,档案设置,总账系统,薪资管理系统,固定资产系统,应收款管理系统,应付款管理系统,UFO报表系统等

用友软件U8软件安装注意事项 用友u8结账注意事项

因为有很多朋友问用友U8软件如何安装,总是出现问题,现和广大朋友分享下用友软件U8软件安装注意事项——工具/原料用友U8.52软件,数据库:SQLServer2000或MSDE2000。用友软件U8软件安装注意事项——步骤/方法用友软件U8软件安装注意事项

AD域活动目录常见问题集锦 用友u8常见问题集锦1

A1、客户机无法加入到域?一、权限问题。要想把一台计算机加入到域,必须得以这台计算机上的本地管理员(默认为administrator)身份登录,保证对这台计算机有管理控制权限。普通用户登录进来,更改按钮为灰色不可用。并按照提示输入一个域用户

用友u8系列软件年度结转流程 用友u8结转损益

一、账套备份输出账套功能是指将所选的账套数据进行备份输出。对于企业系统管理员来讲,定时的将企业数据备份出来存储到不同的介质上(如常见的软盘、光盘、网络磁盘等等),对数据的安全性是非常重要的。如果企业由于不可预知的原因(如

用友U8安装与可能遇到的问题说明 用友u8使用说明书

时间:2010-05-02 19:57来源: 作者:晓红 点击:10次用友U8安装说明 1、先安装数据库:路径:U8光盘下MSDE2000,安装后会重启一次 2、安装U8:运行U8光盘下SETUP.EXE,选择相应的模块,开始安装。 3、安装完成后,运行U8管理软件8.21的系统报务下的

声明:《触发器格式 用友u8中途增加货位》为网友森与雨露心分享!如侵犯到您的合法权益请联系我们删除