Aracılığıyla paylaş


VARSAYLANI OLUŞTUR (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Varsayılan olarak adlandırılan bir nesne oluşturur. Bir sütuna veya diğer ad veri türüne bağlıyken, ekleme sırasında açıkça hiçbir değer sağlanmamışsa, varsayılan değer nesnenin bağlı olduğu sütuna (veya diğer ad veri türündeyse tüm sütunlara) eklenecek değeri belirtir.

Önemli

Bu özellik, SQL Server'ın gelecek bir sürümünde kaldırılacaktır. Bu özelliği yeni geliştirme çalışmalarında kullanmaktan kaçının ve şu anda bu özelliği kullanan uygulamaları değiştirmeyi planlayın. Bunun yerine, veya DEFAULTanahtar sözcüğü ALTER TABLE kullanılarak CREATE TABLE oluşturulan varsayılan tanımları kullanın.

Transact-SQL söz dizimi kuralları

Sözdizimi

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

Arguments

schema_name

Varsayılanın ait olduğu şemanın adı.

default_name

Varsayılan adı. Varsayılan adlar, tanımlayıcıların kurallarına uymalıdır. Varsayılan sahip adını belirtmek isteğe bağlıdır.

constant_expression

Yalnızca sabit değerler içeren bir ifade (herhangi bir sütunun veya diğer veritabanı nesnelerinin adlarını içeremez). Diğer ad veri türleri içerenler dışında herhangi bir sabit, yerleşik işlev veya matematiksel ifade kullanabilirsiniz. Kullanıcı tanımlı işlevler kullanılamaz. Karakter ve tarih sabitlerini tek tırnak içine alın ('); parasal, tamsayı ve kayan nokta sabitleri tırnak işareti gerektirmez. İkili verilerin önünde 0xve parasal verilerin önünde dolar işareti ($ olmalıdır). Varsayılan değer sütun veri türüyle uyumlu olmalıdır.

Açıklamalar

Geçerli veritabanında yalnızca varsayılan bir ad oluşturabilirsiniz. Bir veritabanında varsayılan adların şemaya göre benzersiz olması gerekir. Varsayılan oluşturduğunuzda, bunu bir sütuna veya diğer ad veri türüne bağlamak için kullanın sp_bindefault .

Varsayılan değer bağlı olduğu sütunla uyumlu değilse, SQL Server varsayılan değeri eklemeye çalışırken bir hata iletisi oluşturur. Örneğin, yok sayısal sütun için varsayılan olarak kullanılamaz.

Varsayılan değer, bağlandığı sütun için çok uzunsa, değer kesilir.

CREATE DEFAULT deyimleri tek bir toplu işte diğer Transact-SQL deyimleriyle birleştirilemiyor.

Aynı adda yeni bir tane oluşturmadan önce varsayılan değer bırakılmalıdır. Ayrıca, bırakılmadan önce yürütülerek sp_unbindefault varsayılanın ilişkisiz olması gerekir.

Bir sütunda hem varsayılan hem de onunla ilişkilendirilmiş bir kural varsa, varsayılan değer kuralı ihlal etmemelidir. Bir kuralla çakışır bir varsayılan hiçbir zaman eklenmez ve SQL Server varsayılanı eklemeye her çalıştığında bir hata iletisi oluşturur.

Bir sütuna bağlıyken, aşağıdaki durumlarda varsayılan bir değer eklenir:

  • Bir değer açıkça eklenmez.
  • DEFAULT VALUES Varsayılan değerleri eklemek için veya DEFAULT anahtar sözcükleri ile INSERT birlikte kullanılır.

Sütun oluştururken belirtirseniz NOT NULL ve bunun için varsayılan bir değer oluşturmazsanız, kullanıcı bu sütunda bir giriş yapamazsa hata iletisi oluşturulur. Aşağıdaki tabloda, varsayılan bir sütunun varlığı ile veya NULLolarak NOT NULL bir sütunun tanımı arasındaki ilişki gösterilmektedir. Tablodaki girdiler sonucu gösterir.

Sütun tanımı Girdi yok, varsayılan yok Girdi yok, varsayılan Girin NULL, varsayılan yok girin NULL, varsayılan
NULL NULL Varsayılan NULL NULL
NOT NULL Hata Varsayılan Hata Hata

Varsayılanı yeniden adlandırmak için varsayılandaki sp_rename bir rapor için kullanın sp_help.

Permissions

kullanmak CREATE DEFAULTiçin, kullanıcının en azından geçerli veritabanında ve varsayılanın CREATE DEFAULT oluşturulduğu şema üzerinde izni olmalıdırALTER.

Örnekler

A. Temel karakter varsayılanı oluşturma

Aşağıdaki örnek, adlı unknownbir karakter varsayılanı oluşturur.

USE AdventureWorks2022;
GO

CREATE DEFAULT phonedflt
    AS 'unknown';

B. Varsayılan bağlama

Aşağıdaki örnek, A örneğinde oluşturulan varsayılan değeri bağlar. Varsayılan, yalnızca tablonun sütunu Phone için Contact herhangi bir girdi belirtilmediğinde geçerli olur.

Uyarı

Herhangi bir girişin atlanması, bir NULL deyimde açıkça belirtilmesinden INSERT farklıdır.

Varsayılan adı phonedflt olmadığından aşağıdaki Transact-SQL deyimi başarısız olur. Bu örnek yalnızca çizim içindir.

USE AdventureWorks2022;
GO

EXECUTE sp_bindefault 'phonedflt', 'Person.PersonPhone.PhoneNumber';