Share via


Varsayılan (Transact-SQL) oluştur

Varsayılan adı verilen bir nesne oluşturur.Ne zaman bir sütun veya bir diğer ad veri türü bağlı, varsayılan sütun , nesnenin bağlı olduğu için (veya diğer ad veri türü durum tüm sütunlara) eklenmesi için bir değer belirtir, hiçbir değer açıkça sağlanan bir ekleme sırasında.

Önemli notÖnemli

Bu özellik Microsoft SQL Server'ın ilerideki bir sürümünde kaldırılacaktır. Yeni geliştirme işlerinde bu özelliği kullanmaktan kaçının ve bu özelliği kullanmakta olan uygulamalarda değişiklik yapmayı planlayın.Bunun yerine, alter table veya create table default anahtar kullanılarak oluşturulan varsayılan tanımlarını kullanın.Daha fazla bilgi için, bkz. Oluşturma ve varsayılan tanımları değiştirme.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

CREATE DEFAULT [ schema_name . ] default_name 
AS constant_expression [ ; ]

Bağımsız değişkenler

  • schema_name
    Varsayılan ait olduğu şema addır.

  • default_name
    Varsayılan adıdır.Varsayılan adları kurallarına uyması gerekir tanımlayıcıları.Varsayılan sahibi adını belirten isteğe bağlıdır.

  • constant_expression
    Olan bir ifade (bunu yapamazsınız dahil tüm sütunları ya da diğer veritabanı nesnelerinin adlarını) yalnızca sabit değerleri içerir.Bir sabit, yerleşik işlevveya matematiksel ifade , diğer ad veri türlerini içeren olanlar dışında kullanılabilir.Kullanıcı tanımlı işlevler kullanılamaz...Karakter ve tarih sabitleri tek tırnak işareti içine alın ('); Parasal, tamsayı ve kayan nokta sabitleri tırnak gerektirmez.İkili veri 0 x gelmelidir ve parasal verileri bir dolar işareti ($) gelmelidir.Varsayılan değer sütun veri türüyle uyumlu olmalıdır.

Açıklamalar

Varsayılan bir ad, yalnızca geçerli veritabanında oluşturulabilir.Bir veritabanı içinde varsayılan adlar, şema tarafından benzersiz olmalıdır.Varsayılan oluşturulduğunda kullanmak sp_bindefault bir sütun veya bir diğer ad veri türü bağlamak için.

Varsayılan değer bağlı, sütun ile uyumlu değilse, SQL Server ekleme çalışırken bir hata iletisivarsayılan değeri.Örneğin, yok için varsayılan olarak kullanılamaz bir sayısal sütun.

Varsayılan değer, bağlı olduğu sütun için çok uzun ise, değer kesilir.

Diğer create default deyimleri ilişkilendirilemez Transact-SQL tek bir toplu işdeyimlerinde.

Varsayılan aynı adda yeni bir tane oluşturmadan önce kesilmesine ve varsayılan yürüterek ilişkisiz gerekir sp_unbindefault kesilmeden önce.

Bir sütun hem varsayılan hem de kendisiyle ilişkilendirilmiş bir kural varsa, varsayılan değer kuralı ihlal gerekir değil.Bir kural ile çakışan varsayılan hiçbir zaman eklenir, ve SQL Server bir hata iletisi üretir her saat çalışır ekleme varsayılan.

Ne zaman bir sütunbağlı, varsayılan değer eklenir olduğunda:

  • Bir değer açıkça alınmamış.

  • Varsayılan DEĞERLER veya varsayılan anahtar sözcükler ile INSERT varsayılan değerleri eklemek için kullanılır.

AKSİ takdirde null sütun oluşturulurken belirtilir ve varsayılan için oluşturulmaz, o sütungiriş yapmak kullanıcı başarısız olduğunda hata iletisi oluşturulur.Aşağıdaki tablo varlığını varsayılan olarak null veya not null sütun tanımı arasındaki ilişkiyi göstermektedir.tablo girdileri sonucu gösterir.

Sütun tanımı

Hiçbir girdi, varsayılan yok

Hiçbir girdi varsayılan

null, hiçbir varsayılan girin

null, varsayılan girin

NULL

NULL

varsayılan

NULL

NULL

NOT NULL

Hata

varsayılan

Hata

Hata

Varsayılan yeniden adlandırmak için kullanın sp_rename.Varsayılan bir rapor için kullandığınız sp_help.

İzinler

yürütmek oluşturma varsayılan, en azından, bir kullanıcının geçerli veritabanında varsayılan oluşturma izni ve alter izni varsayılan oluşturulmaktadır şema üzerinde olmalıdır.

Örnekler

A.Basit karakter varsayılan oluşturma

Aşağıdaki örnek olarak adlandırılan bir karakter varsayılan oluşturur unknown.

USE AdventureWorks2008R2;
GO
CREATE DEFAULT phonedflt AS 'unknown';

B.Varsayılan bağlama

Aşağıdaki örnek örneği a. oluşturulan varsayılan bağlarVarsayılan giriş için belirtilmişse etkili olur Phone sütun Contact tablo.Herhangi bir girdi atlama null INSERT deyimiçinde açıkça belirten den farklı olduğunu unutmayın.

Varsayılan adlı çünkü phonedflt yok, aşağıdaki Transact-SQL deyim başarısız olur.Bu örnek yalnızca gösterim amacıyla verilmiştir.

USE AdventureWorks2008R2;
GO
sp_bindefault 'phonedflt', 'Person.PersonPhone.PhoneNumber';