SQL Server中SET QUOTED_IDENTIFIER的使用sql
在存儲過程當中常常會有
SET QUOTED_IDENTIFIER on
SET QUOTED_IDENTIFIER off 數據庫
若是SET QUOTED_IDENTIFIER on時,在建立一個表時,若是這個表的表名,恰好用到了sqlserver的關鍵字,以下面的狀況 ide
create table distinct(
id int not null constraint pk_1 primary key,
value varchar(255),
flag int
) sqlserver
上面的語句運行是會出錯的,無論SET QUOTED_IDENTIFIER爲on仍是off,會提示 在關鍵字 'distinct' 附近有語法錯誤。 server
那是由於distinct是sqlserver的標識符,若是想以distinct爲表時,在QUOTED_IDENTIFIER爲off的狀況下,是不能建立表名爲distinct的表的,由於在QUOTED_IDENTIFIER爲off狀況下,sqlserver的標識符是不容許加引號的,因此在
SET QUOTED_IDENTIFIER off的狀況下,無論distinct加引號或不加引號或加雙引號都是不能夠的。 table
可是在 SET QUOTED_IDENTIFIER on 的狀況下是能夠把sqlserver的標識符加上雙引號來建立以sqlserver標識符爲表名的表,可是加單引號也是不能夠的。 語法
create table "distinct"(
id int not null constraint pk_1 primary key,
value varchar(255),
flag int
) im
能夠運行 數據
create table ‘distinct’(
id int not null constraint pk_1 primary key,
value varchar(255),
flag int
) 存儲過程
不能夠運行
當 SET QUOTED_IDENTIFIER 爲 ON 時,標識符/數據庫內關鍵字能夠由雙引號括着。當 SET QUOTED_IDENTIFIER 爲 OFF 時,標識符不可加引號,加了引號也沒有用,且必須符合全部 Transact-SQL 標識符規則。
SELECT SESSIONPROPERTY('QUOTED_IDENTIFIER') quotedidentifier默認爲on