可以为视图或表定义 INSTEAD OF INSERT 触发器来替换 INSERT 语句的标准操作。通常会为视图定义 INSTEAD OF INSERT 触发器以在一个或多个基表中插入数据。视图选择列表中的列可以为空,也可以不为空。如果视图列不允许使用空值,则 INSERT 语句必须为该列提供值。如果定义视图列的表达式包括下列项,则视图列允许使用...
在表上指定的INSTEAD OF INSERT触发器和在视图上指定的INSTEAD OF触发器,其inserted表中包含的计算列、标识列和timestamp列的值不同。 基表列 表上任何INSERT触发器的inserted表中的值 视图上INSTEAD OF INSERT触发器inserted表中的值 是计算列。 计算表达式 用户指定值或NULL 具有IDENTITY属性。 如果IDENTITY_INSERT...
INSTEADOFINSERT触发器 可以在视图或表上定义INSTEADOFINSERT触发器来代替INSERT语句的标准操作。通常,在视图上定义INSTEADOFINSERT触发器以在一个或多个基表中插入数据。 视图选择列表中的列可为空也可不为空。如果视图列不允许为空,则INSERT语句必须为该列提供值。如果定义视图列的表达式包括以下项目,则视图列...
值 999 和 N'XXXXXX' 传递到InsteadTrigger,但是触发器中的 INSERT 语句没有选择inserted、PrimaryKey或ComputedCol,因此忽略该值。实际插入BaseTable的行在PrimaryKey中有 2,在ComputedCol有 N'BluePlastic'。 在表上指定的 INSTEAD OF INSERT 触发器和在视图上指定的 INSTEAD OF 触发器,其inserted表中包含的计算...
一些视图表达式可以转换基表列的值,例如通过执行数学运算或使用列作为函数的参数。在这种情况下,INSTEAD OF INSERT 触发器中的逻辑可采用两种方法: 约定可以是:所有 INSERT 语句都提供要放在基表中的原始值,触发器逻辑将插入的表中的值移至基表。 约定可以是:所有 INSERT 语句提供预期得到的由视图上的 SELECT 返回...
数据库中的"instead of"通常后面接的是触发器(Trigger)的类型,常见的类型有:插入(INSERT)、删除(DELETE)、更新(UPDATE)。也就是说,"instead of"后面接的是希望触发器在何种操作发生时被触发。例如,如果你希望在插入某个表的数据时触发某种操作,你可以使用"instead of insert"。这种触发器会在尝试向表中插入数据...
INSTEAD OF触发器工作原理 INSTEAD OF表示并不执行其所定义的操作INSERT,UPDATE ,DELETE,而仅是执行触发器本身,即当对表进行INSERT、UPDATE 或 DELETE 操作时,系统不是直接对表执行这些操作,而是把操作内容交给触发器,让触发器检查所进行的操作是否正确,如正确才进行相应的操作。因此,INSTEAD OF 触发器的动作要早于表...
INSTEAD OF表示并不执行其所定义的操作INSERT,UPDATE ,DELETE,而仅是执行触发器本身,即当对表进行INSERT、UPDATE 或 DELETE 操作时,系统不是直接对表执行这些操作,而是把操作内容交给触发器,让触发器检查所进行的操作是否正确,如正确才进行相应的操作。因此,INSTEAD OF 触发器的动作要早于表的约束处理。
使用INSTEAD OF 触发器,您可以在视图上重写 INSERT、UPDATE 或 DELETE 操作。 例如,您可在视图上定义 INSTEAD OF INSERT 触发器,以替换标准的 INSERT 语句。 假定在 pubs 数据库中以下面的视图开始: 复制 CREATE VIEW AuthorsNames AS SELECT au_id, au_fname, au_lname FROM authors 您可能要向此视图中...
* Instead of Insert 触发器:在新行插入之前执行 * Instead of Update 触发器:在行更新之前执行 * Instead of Delete 触发器:在行删除之前执行 例如: “`sql CREATE TRIGGER Log_Action ON Products INSTEAD OF UPDATE AS BEGIN INSERT INTO Log_Table (Action,UserName) ...