Udostępnij za pośrednictwem


sp_bindefault (języka Transact-SQL)

Domyślnie jest powiązana kolumna lub typ danych alias .

Ważna informacjaWażne:

Ta funkcja zostanie usunięta z przyszłej wersji programu Microsoft SQL Server. Nie należy stosować tej funkcji w nowych projektach oraz jak najszybciej należy zmodyfikować aplikacje, w których obecnie jest używana ta funkcja.Zaleca się utworzenie definicji domyślnej za pomocą domyślnego słowo kluczowe ALTER TABLE lub CREATE TABLE instrukcji w zamian.Aby uzyskać więcej informacji, zobacz Tworzenie i modyfikowanie DOMYŚLNYCH definicje.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

sp_bindefault [ @defname = ] 'default' , 
    [ @objname = ] 'object_name' 
    [ , [ @futureonly = ] 'futureonly_flag' ] 

Argumenty

  • [ @defname= ] 'default'
    Jest to nazwa domyślnego, który jest tworzony domyślnie tworzenie.defaultjest nvarchar(776), z braku domyślne.

  • [ @objname=] 'object_name'
    Jest nazwą tabela i kolumna lub alias typu danych wartość domyślna jest zobowiązany.object_namejest nvarchar(776)z nie domyślnych.object_namenie można zdefiniować za pomocą varchar(max), nvarchar(max), varbinary(max), xml, lub CLR zdefiniowane przez użytkownika typów.

    Jeśli object_name jest nazwą jednej części jest rozwiązywana jako alias danych typu.Jest nazwą dwóch lub trzech części, najpierw jest rozpoznawana jako tabela i kolumna; a jeśli to rozwiązanie nie powiedzie się, jest rozpoznawane jako typ danych alias .Domyślnie dziedziczą istniejących kolumn typu danych alias default, chyba że domyślna zostało związane bezpośrednio z kolumna.Domyślnie nie można powiązać do tekstu, ntext, obrazu, varchar(max), nvarchar(max), varbinary(max), xml, timestamp, lub zdefiniowany przez użytkownika typ CLR kolumna, kolumna tożsamości, właściwość, obliczanej kolumnalub kolumna , która ma już ograniczenie domyślne.

    Ostrzeżenie

    object_namemoże zawierać nawiasy jako separatorami identyfikatorów.Aby uzyskać więcej informacji, zobacz Identyfikatory rozdzielanego (aparat bazy danych).

  • [ @futureonly= ] 'futureonly_flag'
    Jest używane tylko podczas powiązanie wpisz domyślne dane alias .futureonly_flagjest varchar(15) Domyślna wartość NULL.Kiedy ten parametr jest zestaw na futureonly, istniejących kolumn tego typu danych nie można dziedziczyć nowego domyślnego.Ten parametr nie jest nigdy używana podczas powiązanie domyślnej kolumna.Jeśli futureonly_flag ma wartość NULL, nowy domyślny jest związany z kolumn typu danych alias obecnie mają Brak domyślnej lub używające istniejącego domyślnego typu danych alias .

Wartości kodów powrotnych

0 (sukces) lub 1 (błąd)

Uwagi

Można użyć sp_bindefault powiązać nowego domyślnego do kolumna, chociaż preferowane jest używanie domyślne ograniczenie lub typ danych alias bez Rozpinanie istniejące ustawienie domyolne.Stare domyślny zostanie zastąpione.Nie można powiązać domyślny do SQL Server Typ danych systemu lub zdefiniowany przez użytkownika typ CLR.Jeśli wartość domyślna nie jest zgodny z kolumna , z którym jest powiązany, Aparat baz danych programu SQL Server zwraca komunikat o błędzie przy próbie wstawienia wartości domyślnej, nie wtedy, gdy powiąże go

Istniejących kolumn typu danych alias dziedziczą nowego domyślnego, chyba, że albo domyślna jest związana z nimi lub futureonly_flag jest określony jako futureonly.Nowe kolumny Typ danych alias dziedziczą zawsze domyślnie.

Domyślnie jest powiązana z kolumna, informacje pokrewne jest dodawany do sys.columns katalogu widoku.Gdy powiąże domyślny typ danych alias powiązanych informacji jest dodawany do sys.types katalogu widoku.

Uprawnienia

Użytkownik musi własnej tabelalub element członkowski sysadmin stała rola serweralub db_owner i db_ddladmin ról stałej bazy danych.

Przykłady

A.Powiązanie domyślnie do kolumna

Domyślny o nazwie today zostały zdefiniowane w bieżącej bazie danych przy użyciu domyślnego Utwórz domyślne, następujący przykład wiązania HireDate kolumna Employee tabela.Zawsze, gdy dodawany jest wiersz do Employee tabela i dane dla HireDate kolumna nie jest podany, wartości domyślne są umieszczane w kolumna today.

USE master;
GO
EXEC sp_bindefault 'today', 'HumanResources.Employee.HireDate';

B.Powiązanie domyślny typ danych alias

Domyślny o nazwie def_ssn i typem danych alias o nazwie ssn już istnieje.Poniższy przykład wiąże domyślną def_ssn do ssn.Podczas tworzenia tabela domyślnym jest dziedziczone przez wszystkie kolumny są alias typ danych przypisany polu ssn.Istniejących kolumn typu ssn również dziedziczyć domyślną def_ssn, chyba że futureonly określonych dla futureonly_flag wartość, lub jeśli kolumna nie ma domyślnego związane bezpośrednio z.Domyślne ustawienia związane z zawsze pierwszeństwo w stosunku do osób związanych z typami danych kolumn.

USE master;
GO
EXEC sp_bindefault 'def_ssn', 'ssn';

C.Przy użyciu futureonly_flag

Poniższy przykład wiąże domyślną def_ssn do typu danych alias ssn.Ponieważ futureonly jest określony nie istniejących kolumn typu ssn , których dotyczy problem.

USE master;
GO
EXEC sp_bindefault 'def_ssn', 'ssn', 'futureonly';

D.Używane identyfikatory rozdzielanego

W poniższym przykładzie za pomocą identyfikatorów rozdzielanego, [t.1], object_name.

USE master;
GO
CREATE TABLE [t.1] (c1 int) 
-- Notice the period as part of the table name.
EXEC 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.