zoukankan      html  css  js  c++  java
  • sqlserver中常用的四个选项(NOCOUNT/ANSI_NULLS/QUOTED_IDENTIFIER/ XACT_ABORT)

    1 NOCOUNT选项

    当 SET NOCOUNT 为 ON 时,不返回计数。
    当 SET NOCOUNT 为 OFF 时,返回计数。

    eg:

    if object_id(N'table_test',N'U') IS not null
    drop table table_test
    go
    CREATE TABLE table_test(id INT,name VARCHAR(50))
    go
    INSERT INTO table_test VALUES(1,'xiaoming'),(2,null)
    go
    
    SET NOCOUNT ON
    SELECT * FROM table_test
    GO


    SET NOCOUNT OFF
    SELECT * FROM table_test
    GO

     

    2 ANSI_NULLS 选项

    SQL92 ANSI/ISO(简称SQL-92)标准要求对空值(NULL)的等于 (=) 或不等于 (<>) 比较取值都为 FALSE。

    当 SET ANSI_NULLS 为 ON 时,表示SQL语句遵循SQL-92标准。
    字段(column_name) 中包含空值,使用 WHERE column_name = NULL 的 SELECT 语句仍返回零行。

    当 SET ANSI_NULLS 为 OFF 时,表示不遵从 SQL-92 标准。

    使用 WHERE column_name = NULL 的 SELECT 语句返回 column_name 中包含空值的行。

    eg:

    SET ANSI_NULLS ON

    SELECT TOP 100 * FROM table_test WHERE name = NULL

    GO

     

    SET ANSI_NULLS OFF

    SELECT TOP 100 * FROM table_test WHERE name = NULL

    GO

     

     3 QUOTED_IDENTIFIER选项(引用标识符)

    数据库对象的名称即为其标识符。Microsoft SQL Server 中的所有内容都可以有标识符。服务器、数据库和数据库对象(例如表、视图、列、索引、触发器、过程、约束及规则等)都可以有标识符。

    当 SET QUOTED_IDENTIFIER 为 ON 时,

    标识符可以由双引号或者”[ ]”分隔,而文字必须由单引号分隔。

    当 SET QUOTED_IDENTIFIER 为 OFF 时,

    标识符不可加引号,且必须符合所有 Transact-SQL (微软对SQL的扩展)标识符规则。

    SET QUOTED_IDENTIFIER OFF
    GO
    CREATE TABLE "select" ("identity" INT IDENTITY NOT NULL, "order" INT NOT NULL);
    GO
    

    SET
    QUOTED_IDENTIFIER ON; GO CREATE TABLE "select" ("identity" INT IDENTITY NOT NULL, "order" INT NOT NULL); GO SELECT "identity","order" FROM "select" ORDER BY "order"; GO
    DROP TABLE "SELECT";
    GO
    SET QUOTED_IDENTIFIER OFF;
    GO

    4 XACT_ABORT选项

    指定当 Transact-SQL 语句出现运行时错误时,SQL Server 是否自动回滚到当前事务。

    当 SET XACT_ABORT 为 ON 时,如果执行 Transact-SQL 语句产生运行时错误,则整个事务将终止并回滚。

    当 SET XACT_ABORT 为 OFF 时,有时只回滚产生错误的 Transact-SQL 语句,而事务将继续进行处理。如果错误很严重,那么即使 SET XACT_ABORT 为 OFF,也可能回滚整个事务。OFF 是默认设置。

    IF OBJECT_ID(N'demo',N'U') IS NOT NULL
    DROP TABLE demo
    create table demo(id int not null)   
    go   
    --set xact_abort on 
    begin tran   
        insert into demo values (1)   
        insert into demo values (null)  
        insert into demo values (2)   
    commit tran   
    go 
    --set xact_abort off
    Select * from demo
  • 相关阅读:
    Python容器篇 4 -- 字典
    Python容器篇 3 -- 元组
    Python容器篇 2 -- 列表
    Python容器篇 1 -- 字符串
    Python中的关键字
    SQLI-LABS靶场环境搭建详细流程
    Qt QLineEdit 改变text内容的大小
    linux下QT连接mysql找不到驱动
    apt(rpm) Mysql安装
    const 成员函数
  • 原文地址:https://www.cnblogs.com/xiaozhi1236/p/5587365.html
Copyright © 2011-2022 走看看