SQL SERVER – QUOTED_IDENTIFIER ON/OFF
SQL Server’da QUOTED_IDENTIFIER özelliği ile SQL Server için ayrılmış özel kelimeleri kullanarak nesne oluşturmamıza imkan sağlar. “Table,Group,Alter” vb. SQL Server için rezerve edilmiş kelimeleri kullanmamıza imkan sağlayan bir özelliktir.
SQL SERVER için rezerve edilen kelimelerin listesi için : msdn
SQL Server QUOTED_IDENTIFIER özelliği varsayılan olarak açık (ON) durumdadır. Özelliğin daha iyi anlaşılması için bu özelliği önce kapatıp (OFF) data sonra SQL server için rezerve edilmiş bir kelime ile tablo oluşturmaya çalışacağım.
[sql]
SET QUOTED_IDENTIFIER OFF
CREATE TABLE "TABLE"
(
"int" int,
"datetime" datetime
)
[/sql]
QUOTED_IDENTIFIER özelliği kapalı iken bize Sql Server için rezerve edilmeş kelime ile tablo oluşturmamıza izin vermiyor. QUOTED_IDENTIFIER özellğini açıp tekrar deneyelim.
[sql]
SET QUOTED_IDENTIFIER ON
CREATE TABLE "TABLE"
(
"int" int,
"datetime" datetime
)
[/sql]
QUOTED_IDENTIFIER özelliğini açtıktan sonra Sql Server için rezerve edilen kelime olan “TABLE” kelimesi ile tablo oluşturmamıza imkan sağlamıştır. Dikkat ettiyseniz tablodak kolon isimlerini de veri türü ismi ile aynı olacak şekilde kullanmamıza da imkan sağlıyor. Şimdi rezerve edilen bir kelime ile oluşturmuş olduğumuz tabloya kayıt ekleyip sorgulayalım.
[sql]
SET QUOTED_IDENTIFIER ON
INSERT INTO "TABLE" VALUES(1,GETDATE())
SELECT * FROM "TABLE"
[/sql]
Oluşturduğumuz tablomuza kayıt ekleyip sorgulama işlemini gerçekleştirdik. Genelde SQL Server için rezerve edilen kelimeler ile tablo oluşturup projenizde kullanmak istemezsiniz. Yine de böyle bir özelliğin olduğunu bilmeniz faydalı olacaktır.
NOT: QUOTED_IDENTIFIER özelliği varsayılan olarak ON durumundadır.
EK Bilgi: QUOTED_IDENTIFIER özelliği ile çift tırnak kullanarak SQL Server için rezerve edilmiş kelimeleri kullanmamıza imkan sağlıyor. QUOTED_IDENTIFIER özelliği ON / OFF farketmeksizin rezerve edilmiş kelimeleri kullanmak isterseniz “[ ]” kullanabilirsiniz.
[sql]
CREATE TABLE [TABLE]
(
[int] int,
[datetime] datetime
)
INSERT INTO [TABLE] VALUES (1,GETDATE())
SELECT * FROM [TABLE]
[/sql]
Faydası olması dileğiyle.