`
jackroomage
  • 浏览: 1217668 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

sqlserver 中 触发器的写法

 
阅读更多

--   插入时执行触发器

 

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
create trigger [dbo].[rscOpenInsert]
on [dbo].[RSC_INFO]
for insert
as
DECLARE
@v_rscID varchar(50),
@v_status int
begin
    select @v_rscID=rscID,@v_status=status from inserted;
    --取得当前资源信息status>4 才插入信息
 if @v_status > 4
   begin
    insert into RSC_OPEN_SYNCHRONOUS(rscID,opStatus,opDateTime) values (@v_rscID,'insert',getDate())
   end
end

 

 

 

--- 更新时执行触发器

 

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
create trigger [dbo].[rscOpenUpdate]
on [dbo].[RSC_INFO]
for update
as
DECLARE
@v_rscID varchar(50),
@v_status int
begin
    select @v_rscID=rscID,@v_status=status from inserted;
    --取得当前资源信息status>4 才更新信息
if @v_status > 4
   begin
     update RSC_OPEN_SYNCHRONOUS set opStatus = 'update', opDateTime = getDate() where rscID=@v_rscID
   end
end

 

 

 

 

 

 SQLServer中的“SET ANSI_NULLS ON”和“SET QUOTED_IDENTIFIER ON”有什么实际的用处?

这些是 SQL-92 设置语句,使 SQL Server 2000/2005 遵从 SQL-92 规则。
当 SET QUOTED_IDENTIFIER 为 ON 时,标识符可以由双引号分隔,而文字必须由单引号分隔。当 SET QUOTED_IDENTIFIER 为 OFF 时,标识符不可加引号,且必须符合所有 Transact-SQL 标识符规则。
SQL-92 标准要求在对空值进行等于 (=) 或不等于 (<>) 比较时取值为 FALSE。当 SET ANSI_NULLS 为 ON 时,即使 column_name 中包含空值,使用 WHERE column_name = NULL 的 SELECT 语句仍返回零行。即使 column_name 中包含非空值,使用 WHERE column_name <> NULL 的 SELECT 语句仍会返回零行。
当 SET ANSI_NULLS 为 OFF 时,等于 (=) 和不等于 (<>) 比较运算符不遵从 SQL-92 标准。使用 WHERE column_name = NULL 的 SELECT 语句返回 column_name 中包含空值的行。使用 WHERE column_name <> NULL 的 SELECT 语句返回列中包含非空值的行。此外,使用 WHERE column_name <> XYZ_value 的 SELECT 语句返回所有不为 XYZ_value 也不为 NULL 的行。

 

 

分享到:
评论

相关推荐

    SqlServer触发器写法案例

    #### 四、案例分析:SqlServer触发器写法案例 下面通过一个具体的例子来详细了解如何编写一个触发器。 ##### 案例背景 假设我们有一个名为`OrderBook`的表,其中包含订单信息,以及一个名为`Categories`的表,...

    SqlServer2000触发器

    在SQL Server 2000中,触发器是一种特殊的存储过程,它在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行。触发器是数据库规则和约束的扩展,可以用于实现更复杂的业务逻辑,确保数据的完整性和一致性...

    SQL数据库(触发器)

    SQL数据库。

    MySQL与SQL的触发器的不同写法

    本文将详细讨论MySQL与SQL Server中触发器的不同写法。 在SQL Server中,触发器的创建使用`CREATE TRIGGER`语句。以下是一个示例,假设我们有两张表`sql_test`和`sql_tem`,它们具有相同的字段结构: ```sql ...

    SQL Server数据库中DML触发器的教学探讨

    针对初学者容易混淆AFTER触发器与INSTEAD OF触发器的问题,首先用通俗的语言对触发器进行了概述,接着阐述了触发器的工作原理,然后结合实例分析了AFTER触发器与INSTEAD OF触发器的主要区别与应用,最后总结了触发器...

    SqlServer高级命令

    ### SqlServer 高级命令详解 #### 概述 在SQL Server中,高级命令是指那些能够帮助数据库管理员或开发人员更高效地管理、查询及优化数据的特定指令。这些命令通常涉及复杂的操作流程,比如数据表结构调整、数据...

    Sql语法转换为Oracle语法

    5. 触发器和存储过程:SQL Server和Oracle的语法在创建和调用触发器和存储过程上有所不同,需要特别注意参数传递和返回值的处理。 6. 数据类型:两者的数据类型有差异,例如SQL Server的 `NVARCHAR` 对应Oracle的 `...

    SQL Server 期末考题2

    1. **触发器**:触发器是SQL Server中的一种特殊类型的存储过程,它会在特定的DML(数据操纵语言)操作(如INSERT、UPDATE或DELETE)发生时自动执行。题目中提到触发器可以创建在表上,用于在数据修改时执行额外的...

    quartz创建表sql

    在Quartz的部署和配置过程中,为了存储作业和触发器的信息,我们需要在关系型数据库中创建相应的表。本主题将详细介绍如何为Oracle、MySQL、DB2和SQL Server等常见数据库创建Quartz所需的表结构。 一、Oracle数据库...

    查询优化技术及SQL Server2000的查询优化方法.pdf

    在SQL Server 2000这样的关系型数据库管理系统(RDBMS)中,查询优化尤为重要,因为它能够通过改进查询执行计划来大幅度提升数据库操作的效率和响应速度。 首先,查询优化技术的基础是理解查询处理过程。一个典型的...

    总结SQLite不支持的SQL语法差异

    在SQL Server中,使用`TOP`子句来限制查询结果的数量,例如: ``` SELECT TOP 10 * FROM [index] ORDER BY indexid DESC; ``` 而在SQLite中,`TOP`是不被支持的,可以使用`LIMIT`子句来达到相同的效果: ``` SELECT ...

    行业管理_触发器_trigger_saddlegw6_

    触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,,sql触发器的写法,简化代码量

    SQL-Server-2008数据库总复习题A.docx

    - `$money`:尽管美元符号 ($) 在某些情况下可以作为标识符的一部分,但在 SQL Server 中这并不是一个标准的做法。 - `trigger1`:数字可以放在标识符的末尾。 - 因此,不合法的标识符为 `$money`(选项C),因为...

    泛微系统SQL语句大全

    本资源集合了泛微系统中与SQL Server数据库交互时常用的各种SQL语句,涵盖了组织架构、流程管理以及自定义需求等多个方面。以下是对这些SQL语句知识点的详细解释: 1. **组织架构相关SQL**: - 组织架构是企业信息...

    sql 游标详解

    1. **`LOCAL`**:限定游标的作用范围为所在存储过程、触发器或批处理中。当存储过程结束时,游标自动释放。 - 使用场景:常用于存储过程内部使用游标的情况。 2. **`GLOBAL`**:游标的作用范围为整个会话,即从用户...

    AlwaysOn技术在携程核心数据库的应用.pdf

    - 也规定了一些禁止和不推荐使用的SQL写法,如避免使用LinkedServers、Truncate、通配符“*”、触发器等。 5. **高可用架构** - 携程采用包括群集、镜像和日志传输在内的多种高可用策略。 - 高可用架构包括了...

    SQL删除多列语句的写法

    首先,我们需要理解SQL Server中的`ALTER TABLE`语句,它是用于修改现有表结构的关键命令。当需要删除表中的一个或多个列时,可以结合`DROP COLUMN`子句来完成这一操作。然而,需要注意的是,删除列是一个不可逆的...

    FIREBIRD使用经验总结

    通过触发器与发生器的结合,可以实现类似MS SQL Server中`IDENTITY`字段的功能。发生器负责记录值的增长,触发器则用于在插入新记录时调用发生器获取下一个序列值。这种设计虽然看似复杂,但提供了对序列值更精细的...

    7个数据库SQL项目源码.rar

    - 关系数据库模型:在这些项目中,可能涉及了如MySQL、PostgreSQL或Microsoft SQL Server等关系型数据库管理系统。理解如何创建表、定义字段类型以及设置约束是基础。 2. **SQL查询语言**: - SELECT语句:用于从...

Global site tag (gtag.js) - Google Analytics