Aracılığıyla paylaş


sp_bindefault (Transact-SQL)

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

Varsayılan bir sütüne veya bir alias veri tipine bağlar.

Ö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. Varsayılan tanımları ALTER TABLE veya CREATE TABLE ifadelerinin DEFAULT anahtar kelimesini kullanarak oluşturmanızı öneririz.

Transact-SQL söz dizimi kuralları

Sözdizimi

sp_bindefault
    [ @defname = ] N'defname'
    , [ @objname = ] N'objname'
    [ , [ @futureonly = ] 'futureonly' ]
[ ; ]

Arguments

[ @defname = ] N'defname'

Varsayılan adı.CREATE DEFAULT @defnamenvarchar(776)'dır ve varsayılan yoktur.

[ @objname = ] N'objname'

Varsayılan olarak bağlanacak olan tablo ve sütunun adı ya da takma adın veri türü. @objnamenvarchar(776)'dır ve varsayılan yoktur. @objnamevarchar(max), nvarchar(max), varbinary(max), xml veya CLR kullanıcı tanımlı tiplerle tanımlanamaz.

Eğer @objname tek parçalı bir isimse, bir takma ad veri tipi olarak çözülür. Eğer iki veya üç bölümlü bir isim ise, önce tablo ve sütun olarak çözülür; ve bu çözünürlük başarısız olursa, bir takma ad veri tipi olarak çözülür. Varsayılan olarak, takma adının mevcut sütunları @defname miras alır, ancak varsayılan bir varsayım doğrudan sütuna bağlı değilse. Varsayılan bir metin,ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, timestamp veya CLR kullanıcı tanımlı tip sütununa, bu IDENTITY özelliği içeren bir sütuna, hesaplanan bir sütuna veya zaten kısıtlaması DEFAULT olan bir sütuna bağlanamaz.

@objname , sınırlandırılmış tanımlayıcılar olarak parantez ([ ve ]) içerebilir. Daha fazla bilgi için bkz . Veritabanı tanımlayıcıları.

[ @futureonly = ] 'gelecekten'

Yalnızca varsayılan bir takma adını bir alias veri türüne bağlamakta kullanılır. @futureonlyvarchar(15)'tir, varsayılan NULLolarak . Bu parametre olarak futureonlyayarlandığında, o veri tipindeki mevcut sütunlar yeni varsayılanı devralamaz. Bu parametre, varsayılan bir sütuna bağlanırken asla kullanılmaz. Eğer @futureonlyNULLise, yeni varsayılan, şu anda varsayılan olmayan veya mevcut varsayılan takma adını kullanan herhangi bir alias veri tipi sütunlarına bağlıdır.

Dönüş kodu değerleri

0 (başarı) veya 1 (başarısızlık).

Açıklamalar

Yeni sp_bindefault bir varsayılan bir sütüne bağlamak için kullanabilirsin, ancak kısıtlama DEFAULT tercih edilir, ya da mevcut bir varsayılanı kaldırmadan bir alias veri tipine bağlamak için kullanabilirsin. Eski varsayılan geçersiz kaldı. Varsayılan bir SQL Server sistem veri tipine veya CLR kullanıcı tanımlı tipine bağlayamazsınız. Varsayılan değer, bağlandığınız sütunla uyumlu değilse, SQL Server Veritabanı Motoru varsayılan değeri girmeye çalıştığında hata mesajı döndürür, siz onu bağlamanız için değil.

Mevcut alias veri tipi sütunları, yeni varsayılanı devralır, ancak varsayılan doğrudan onlara bağlı değilse veya sadece gelecek olarak futureonlybelirtilmedikçe. Alias veri tipinin yeni sütunları her zaman varsayılan değeri devralır.

Bir varsayılan bir sütuna bağladığınızda, ilgili bilgiler katalog sys.columns görünümüne eklenir. Bir varsayılan bir alias veri türüne bağladığınızda, ilgili bilgiler katalog sys.types görünümüne eklenir.

Permissions

Kullanıcı tabloya sahip olmalı, ya da sysadmin sabit sunucu rolünün üyesi olmalı, ya da db_owner ve db_ddladmin sabit veritabanı rollerinin bir üyesi olmalıdır.

Örnekler

A. Bir varsayılanı bir sütuna bağla

Varsayılan bir isimtoday, mevcut veritabanında tanımlanır.CREATE DEFAULT Aşağıdaki örnek, varsayılan HireDate değeri tablonun Employee sütununa bağlar. Tabloya bir satır eklendiğinde Employee ve sütun için HireDate veri sağlanmadığında, sütun varsayılan todaydeğerini alır.

USE master;
GO

EXECUTE sp_bindefault 'today', 'HumanResources.Employee.HireDate';

B. Bir varsayılan bir alias veri tipine bağla

Varsayılan adlandırılmış def_ssn bir ve bir alias veri tipi ssn zaten vardır. Aşağıdaki örnek, varsayılan def_ssn değeri 'ye ssnbağlar. Bir tablo oluşturulduğunda, varsayılan değer, takma ad veri tipine ssnatanan tüm sütunlar tarafından devralınır. Mevcut tipteki ssn sütunlar da varsayılan def_ssndeğeri miras alır, @futureonlyfutureonly değeri için belirtilmedikçe veya sütunun doğrudan ona varsayılan sınırı yoksa. Sütunlara bağlı varsayılan ayarlar, veri tiplerine bağlı varsayılanlara göre her zaman önceliklidir.

USE master;
GO

EXECUTE sp_bindefault 'def_ssn', 'ssn';

C. futureonly seçeneğini kullanın

Aşağıdaki örnek, varsayılan def_ssn takma adı veri türüne ssnbağlar. Belirtildiği için futureonly , mevcut tip ssn sütunları etkilenmez.

USE master;
GO

EXECUTE sp_bindefault 'def_ssn', 'ssn', 'futureonly';

D. Sınırlandırılmış tanımlayıcılar kullanın

Aşağıdaki örnek, @objname içinde sınırlandırılmış tanımlayıcıların [t.1]kullanıldığını göstermektedir.

USE master;
GO

CREATE TABLE [t.1] (c1 INT);

-- Notice the period as part of the table name.
EXECUTE sp_bindefault 'default1', '[t.1].c1';

-- The object contains two periods;
-- the first is part of the table name,
-- and the second distinguishes the table name from the column name.