隐性和显式空值激活sql server触发器的方法

数据库 SQL Server
在列中插入了一个隐性空值或者插入了一个默认值的条件下,sql server触发器仍可以激活,下面就将为您介绍这种方法,希望对您有所帮助。

下文将为您详细解读隐性和显式空值激活sql server触发器的方法,供您参考,希望对您学习sql server触发器的使用能够有所启迪。

在列中插入显式空值,或使用 DEFAULT 关键字为列赋值,都可以按预期激活触发器。同样,当没有在 INSERT 语句中为列指定值时,sql server触发器仍可以在下列条件下激活:

◆由于不存在DEFAULT 定义,列中插入了一个隐性空值。

◆由于DEFAULT 定义确实存在,列中插入了一个默认值。

示例:用空值和默认值测试sql server触发器激活

下列示例表明sql server触发器如何受隐性和显式空值的影响。创建小型表以容纳两个触发器的值。一列包含空值,另一列包含默认值。触发器评价上述两列是否需要修改并且显示激活触发器时的信息。一系列 INSERT 语句通过插入隐性和显式空值的组合来测试触发器激活。

  1. CREATE TABLE t1  
  2. (a int NULL, b int NOT NULL DEFAULT 99)  
  3. GO  
  4.  
  5. CREATE TRIGGER t1trig  
  6. ON t1  
  7. FOR INSERT, UPDATE  
  8. AS  
  9. IF UPDATE(a) AND UPDATE(b)  
  10.    PRINT 'FIRING'  
  11. GO  
  12.  
  13. --When two values are inserted, the UPDATE is TRUE for   
  14. both columns and the trigger is activated.  
  15. INSERT t1 (a, b)   
  16. VALUES (1, 2)   
  17.  
  18. --When two values are updated, the UPDATE is TRUE for   
  19. both columns and the trigger is activated.  
  20. UPDATE t1   
  21. SET a = 1b = 2 
  22.  
  23. --When an explicit NULL is inserted in column a,  
  24. the UPDATE is TRUE for both columns and the trigger is activated.  
  25. INSERT t1  
  26. VALUES (NULL, 2)  
  27.  
  28. --When an explicit NULL is updated in column a,   
  29. the UPDATE is TRUE for both columns,the trigger is activated.  
  30. UPDATE t1   
  31. SET a = NULLb = 2 
  32.  
  33. --When an implicit NULL is inserted in column a,  
  34.  the UPDATE is TRUE for both columns and the trigger is activated.  
  35. INSERT t1 (b)  
  36. VALUES (2)  
  37.  
  38. --When column a is updated with an implicit NULL,  
  39.  the UPDATE is FALSE for both columns and the trigger is not activated.  
  40. UPDATE t1   
  41. SET b = 2 
  42.  
  43. --When the default value is implicitly inserted in column b,   
  44. the UPDATE is TRUE for both columns and the trigger is activated.  
  45. INSERT t1 (a)  
  46. VALUES (2)  
  47.  
  48. --When column b is updated with an implicit NULL,   
  49. the UPDATE is FALSE for both columns and the trigger is not activated.  
  50. UPDATE t1   
  51. SET a = 2 
  52.  
  53. --When the default value is explicitly inserted in column b,   
  54. the UPDATE is TRUE for both columns and the trigger is activated.  
  55. INSERT t1 (a, b)  
  56. VALUES (2, DEFAULT)  
  57.  
  58. --When column b is updated explicitly with the default value,   
  59. the UPDATE is TRUE for both columns and the trigger is activated.  
  60. UPDATE t1   
  61. SET a = 2b = DEFAULT 

 

 

 

【编辑推荐】

教您如何查看Sql Server数据文件

查看sql server数据库连接数的三种方法

sql server数据库文件的压缩方法

sql server字符串的类型

sql server字符串截取实例分析

 

 

责任编辑:段燃 来源: 赛迪网
相关推荐

2010-11-12 15:35:55

SQL Server约

2009-04-07 13:56:03

SQL Server触发器实例

2010-10-20 14:34:48

SQL Server触

2010-09-13 17:03:34

sql server触

2010-07-16 10:19:31

2010-11-10 13:37:01

SQL Server触

2010-04-19 10:43:27

SQL Server

2010-10-22 11:10:43

SQL Server触

2010-11-08 11:49:24

SQL Server管

2010-07-06 14:47:03

SQL Server数

2011-03-03 09:30:24

downmoonsql登录触发器

2010-10-19 15:31:40

sql server触

2011-03-28 10:05:57

sql触发器代码

2010-07-05 11:09:55

SQL Server触

2019-10-22 07:50:45

SqlServer数据库触发器

2010-07-05 11:01:37

Sql Server触

2010-06-30 09:36:25

SQL Server

2011-04-01 16:35:09

SQL Server数触发器

2009-04-26 22:27:54

触发器密码修改数据库

2011-04-14 10:53:00

MySQLSQL触发器
点赞
收藏

51CTO技术栈公众号