Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
ALTER TABLE kullanılarak tabloya eklenen hesaplanan sütunun özelliklerini belirtir.
Transact-SQL söz dizimi kuralları
Syntax
column_name AS computed_column_expression
[ PERSISTED [ NOT NULL ] ]
[
[ CONSTRAINT constraint_name ]
{ PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
[ WITH FILLFACTOR = fillfactor ]
[ WITH ( <index_option> [, ...n ] ) ]
[ ON { partition_scheme_name ( partition_column_name ) | filegroup
| "default" } ]
| [ FOREIGN KEY ]
REFERENCES ref_table [ ( ref_column ) ]
[ ON DELETE { NO ACTION | CASCADE } ]
[ ON UPDATE { NO ACTION } ]
[ NOT FOR REPLICATION ]
| CHECK [ NOT FOR REPLICATION ] ( logical_expression )
]
Arguments
column_name
Değiştirilecek, eklenecek veya bırakılacak sütunun adıdır. column_name 1 ile 128 karakter arasında olabilir. Yeni sütunlar için, zaman damgası veri türüyle oluşturulan sütunlar için column_name atlanabilir. Zaman damgası veri türü sütunu için column_name belirtilmezse, zaman damgası adı kullanılır.
computed_column_expression
Hesaplanan sütunun değerini tanımlayan bir ifadedir. Hesaplanan sütun, fiziksel olarak tabloda depolanmayan ancak aynı tablodaki diğer sütunları kullanan bir ifadeden hesaplanan bir sanal sütundur. İfade bir değer vermelidir. Örneğin, hesaplanan bir sütun şu tanıma sahip olabilir: maliyet AS fiyatı * miktar. Bit düzeyinde işleçler içeren başka bir örnek: is_finalised AS is_checked | is_approved. İfade, birleştirilmemiş bir sütun adı, sabit, işlev, değişken ve bunların bir veya daha fazla işleçle bağlanmış herhangi bir bileşimi olabilir. İfade bir arama koşulu, alt sorgu olamaz veya diğer ad veri türü içeremez.
Hesaplanan sütunlar seçme listelerinde, WHERE yan tümcelerinde, ORDER BY yan tümcelerinde veya normal ifadelerin kullanılabildiği diğer konumlarda kullanılabilir, ancak aşağıdaki özel durumlar geçerlidir:
Hesaplanan sütun, DEFAULT veya FOREIGN KEY kısıtlama tanımı olarak veya NOT NULL kısıtlama tanımıyla kullanılamaz. Bununla birlikte, hesaplanan sütun değeri belirlenimci bir ifadeyle tanımlanırsa ve sonucun veri türüne dizin sütunlarında izin verilirse, hesaplanan sütun bir dizinde anahtar sütunu olarak veya bİrİnCİl ANAHTAR veya BENZERSİz kısıtlamasının bir parçası olarak kullanılabilir.
Örneğin, tabloda a ve b tamsayı sütunları varsa, hesaplanan a + b sütunu dizine alınabilir, ancak hesaplanan a + DATEPART(dd, GETDATE()) sütunu dizine alınamaz çünkü sonraki çağrılarda değer değişebilir.
Hesaplanan sütun, INSERT veya UPDATE deyiminin hedefi olamaz.
Note
Bir tablodaki her satır, hesaplanan sütunda yer alan sütunlar için farklı değerlere sahip olabileceğinden, hesaplanan sütun her satır için aynı sonuda sahip olmayabilir.
PERSISTED
Veritabanı Altyapısı'nın hesaplanan değerleri tabloda fiziksel olarak depolayacak ve hesaplanan sütunun bağlı olduğu diğer sütunlar güncelleştirildiğinde değerleri güncelleştireceğini belirtir. Hesaplanan sütunu PERSISTED olarak işaretlemek, kesin olmayan ancak belirlenebilen bir hesaplanmış sütunda dizin oluşturulmasını sağlar. Daha fazla bilgi için bkz.Hesaplanan Sütunlarda Dizinler
NULL | NOT NULL
Sütunda null değerlere izin verilip verilmeyeceğini belirtir. NULL kesinlikle bir kısıtlama değildir, ancak NOT NULL gibi belirtilebilir. NOT NULL, hesaplanan sütunlar için yalnızca PERSISTED de belirtilmişse belirtilebilir.
CONSTRAINT
BİrİnCİl ANAHTAR veya BENZERSİz kısıtlaması için tanımın başlangıcını belirtir.
constraint_name
Yeni kısıtlamadır. Kısıtlama adları , tanımlayıcıların kurallarına uymalıdır, ancak ad bir sayı işaretiyle (#) başlayamaz.
constraint_name sağlanmazsa, kısıtlamaya sistem tarafından oluşturulan bir ad atanır.
BİRİNCİL ANAHTAR
Benzersiz bir dizin kullanarak belirtilen sütun veya sütunlar için varlık bütünlüğünü zorlayan bir kısıtlamadır. Her tablo için yalnızca bir BİRİnCİl ANAHTAR kısıtlaması oluşturulabilir.
UNIQUE
Benzersiz bir dizin kullanarak belirli bir sütun veya sütun için varlık bütünlüğü sağlayan bir kısıtlamadır.
KÜMELENDİ | KÜMELENMİDİ
BİrİnCİl ANAHTAR veya BENZERSİz kısıtlaması için kümelenmiş veya kümelenmemiş bir dizin oluşturulduğunu belirtir. BİRİnCİl ANAHTAR kısıtlamaları varsayılan olarak KÜMELENDİ olarak ayarlanır. UNIQUE kısıtlamaları varsayılan olarak NONCLUSTERED olarak ayarlanır.
Bir tabloda kümelenmiş kısıtlama veya dizin zaten varsa, CLUSTERED belirtilemez. Bir tabloda kümelenmiş bir kısıtlama veya dizin zaten varsa, BİRİnCİl ANAHTAR kısıtlamaları varsayılan olarak KÜMELENDİSİZ olarak ayarlanır.
FILLFACTOR = DOLDURUCU ILE
SQL Server Veritabanı Altyapısı'nın dizin verilerini depolamak için kullanılan her dizin sayfasını ne kadar dolu hale getirmesi gerektiğini belirtir. Kullanıcı tarafından belirtilen fillfactor değerleri 1 ile 100 arasında olabilir. Bir değer belirtilmezse, varsayılan değer 0'dır.
Important
BİRİnCİl ANAHTAR veya BENZERSİz kısıtlamalar için geçerli olan tek dizin seçeneği olarak FILLFACTOR = fillfactor ile belgeleme geriye dönük uyumluluk için korunur, ancak gelecek sürümlerde bu şekilde belgelenmez. Diğer dizin seçenekleri ALTER TABLE'un index_option (Transact-SQL) yan tümcesinde belirtilebilir.
YABANCı ANAHTAR BAŞVURULARı
Sütun veya sütunlardaki veriler için bilgi tutarlılığı sağlayan bir kısıtlamadır. YABANCI ANAHTAR kısıtlamaları, sütundaki her değerin başvuruda bulunan ilgili sütunda veya başvuruda bulunan tablodaki sütunlarda olmasını gerektirir. YABANCI ANAHTAR kısıtlamaları yalnızca başvuruda bulunan tablodaki BİRİnCİl ANAHTAR veya BENZERSİz kısıtlamaları olan sütunlara veya başvuruda bulunan tablodaki BENZERSİz İnDİS'te başvuruda bulunan sütunlara başvurabilir. Hesaplanan sütunlardaki yabancı anahtarlar da PERSISTED olarak işaretlenmelidir.
ref_table
YABANCı ANAHTAR kısıtlaması tarafından başvuruda bulunan tablonun adıdır.
(ref_column )
YABANCı ANAHTAR kısıtlaması tarafından başvuruda bulunan tablodan bir sütundur.
SILMEDE { EYLEM YOK | CASCADE }
Bu satırların bilgi ilişkisi varsa ve başvuruda bulunan satır üst tablodan silinirse tablodaki satırlara hangi eylemin olacağını belirtir. Varsayılan değer EYLEM YOK'dur.
EYLEM YOK
Veritabanı Altyapısı bir hata oluşturur ve üst tablodaki satırdaki silme eylemi geri alınır.
CASCADE
Bu satır üst tablodan silinirse, karşılık gelen satırlar başvuran tablodan silinir.
Örneğin, AdventureWorks2025 veritabanında ProductVendor tablosunun Vendor tablosuyla bir bilgi ilişkisi vardır. ProductVendor.BusinessEntityID yabancı anahtarı Vendor.BusinessEntityID birincil anahtarına başvurur.
Bir DELETE deyimi Vendor tablosundaki bir satırda yürütülürse ve ProductVendor.BusinessEntityID için ON DELETE CASCADE eylemi belirtilirse, Veritabanı Altyapısı ProductVendor tablosundaki bir veya daha fazla bağımlı satırı denetler. Varsa, ProductVendor tablosundaki bağımlı satırlar, Vendor tablosunda başvuruda bulunılan satıra ek olarak silinir.
Buna karşılık, EYLEM YOK belirtilirse, Veritabanı Altyapısı bir hata oluşturur ve ProductVendor tablosunda buna başvuran en az bir satır olduğunda Satıcı satırında silme eylemini geri alır.
Tablo, mantıksal kayıtlar kullanan bir birleştirme yayınına dahil edilecekse CASCADE'i belirtmeyin. Mantıksal kayıtlar hakkında daha fazla bilgi için bkz. İlişkili Satırlarda Yapılan Değişiklikleri Mantıksal Kayıtlarla Gruplandırma.
GÜNCELLEŞTIRMEDE { EYLEM YOK }
Bu satırlar bilgi ilişkisine sahip olduğunda ve başvuruda bulunan satır üst tabloda güncelleştirildiğinde oluşturulan tablodaki satırlara hangi eylemin olacağını belirtir. EYLEM BELIRTilmezse, Veritabanı Altyapısı bir hata oluşturur ve ProductVendor tablosunda buna başvuran en az bir satır varsa Satıcı satırında güncelleştirme eylemini geri alır.
ÇOĞALTMA IÇIN DEĞIL
için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri.
YABANCı ANAHTAR kısıtlamaları ve CHECK kısıtlamaları için belirtilebilir. Bu yan tümce bir kısıtlama için belirtilirse, çoğaltma aracıları ekleme, güncelleştirme veya silme işlemleri gerçekleştirdiğinde kısıtlama uygulanmaz.
CHECK
Bir sütuna veya sütunlara girilebilen olası değerleri sınırlayarak etki alanı bütünlüğünü zorlayan bir kısıtlamadır. Hesaplanan sütunlardaki CHECK kısıtlamaları DA PERSISTED olarak işaretlenmelidir.
logical_expression
DOĞRU veya YANLIŞ döndüren mantıksal bir ifadedir. İfade, diğer ad veri türüne başvuru içeremez.
ON { partition_scheme_name(partition_column_name) | dosya grubu| "default"}
için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri.
Kısıtlama için oluşturulan dizinin depolama konumunu belirtir. partition_scheme_name belirtilirse, dizin bölümlenir ve bölümler partition_scheme_name tarafından belirtilen dosya gruplarına eşlenir. Dosya grubu belirtilirse, dizin adlandırılmış dosya grubunda oluşturulur. "Varsayılan" belirtilirse veya AÇICI belirtilmezse, dizin tabloyla aynı dosya grubunda oluşturulur. BİrİnCİl ANAHTAR veya BENZERSİz kısıtlaması için kümelenmiş dizin eklendiğinde AÇILSA, kümelenmiş dizin oluşturulduğunda tablonun tamamı belirtilen dosya grubuna taşınır.
Note
Bu bağlamda, varsayılan bir anahtar sözcük değildir. Varsayılan dosya grubu için bir tanımlayıcıdır ve ON "default" veya ON [default] gibi sınırlandırılmalıdır. "Varsayılan" belirtilirse, geçerli oturum için QUOTED_IDENTIFIER seçeneği ON olmalıdır. Bu varsayılan ayardır. Daha fazla bilgi için bkz. SET QUOTED_IDENTIFIER (Transact-SQL).
Remarks
Her BİRİnCİl ANAHTAR ve BENZERSİz kısıtlaması bir dizin oluşturur. BENZERSİz ve BİRİnCİl ANAHTAR kısıtlamalarının sayısı, tablodaki dizin sayısının 999 kümelenmemiş dizini ve 1 kümelenmiş dizini aşmasına neden olamaz.
SET QUOTED_IDENTIFIER hesaplanan sütunlarda veya dizinlenmiş görünümlerde dizin oluştururken veya değiştirirken ON olmalıdır. Daha fazla bilgi için bkz. SET QUOTED_IDENTIFIER (Transact-SQL).
Fabric SQL veritabanında hesaplanan sütunların oluşturulmasına izin verilir, ancak bunlar Fabric OneLake'e yansıtmadan atlanır.