Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL databáze v Microsoft Fabric
Přiřadí výchozí číslo na sloupec nebo na alias datový typ.
Důležité
Tato funkce bude odebrána v budoucí verzi SQL Serveru. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají. Doporučujeme vytvářet výchozí definice použitím klíčového slova DEFAULT v příkazech ALTER TABLE nebo CREATE TABLE .
Syntaxe
sp_bindefault
[ @defname = ] N'defname'
, [ @objname = ] N'objname'
[ , [ @futureonly = ] 'futureonly' ]
[ ; ]
Arguments
[ @defname = ] N'defname'
Název výchozího nastavení vytvořeného .CREATE DEFAULT
@defname je nvarchar(776), bez výchozího nastavení.
[ @objname = ] N'objname'
Název tabulky a sloupce, nebo alias datový typ, na který je výchozí hodnota vázána. @objname je nvarchar(776), bez defaultu. @objname nelze definovat pomocí uživatelsky definovaných typů varchar(max),nvarchar(max),varbinary(max),xml nebo CLR.
Pokud je @objname jednočlenné jméno, vyřeší se jako alias datový typ. Pokud je to dvou- nebo třídílný název, nejprve se vyřeší jako tabulka a sloupec; a pokud toto rozlišení selže, vyřeší se jako alias datový typ. Ve výchozím nastavení dědí existující sloupce datového typu aliasu @defname, pokud výchozí sloupec není přímo vázán na sloupec. Výchozí nemůže být vázána na text, ntext, image, varchar(max),nvarchar(max),varbinary(max), xml, timestamp nebo CLR uživatelsky definovaný typ sloupce, sloupec s vlastností IDENTITY , vypočítaný sloupec nebo sloupec, který již má omezení DEFAULT .
@objname mohou obsahovat závorky ([ a ]) jako vymezené identifikátory. Další informace naleznete v tématu Identifikátory databáze.
[ @futureonly = ] 'FutureOnly'
Používá se pouze při vázání výchozího na alias datový typ.
@futureonly je varchar(15), s výchozím hodnotou NULL. Když je tento parametr nastaven na futureonly, stávající sloupce daného datového typu nemohou zdědit nový výchozí stav. Tento parametr se nikdy nepoužívá při vázání výchozího nastavení na sloupec. Pokud je @futureonly , NULLje nový výchozí stav vázán na všechny sloupce datového typu aliasu, které aktuálně nemají výchozí nastavení nebo používají stávající výchozí typ aliasu.
Hodnoty návratového kódu
0 (úspěch) nebo 1 (selhání).
Poznámky
Můžete použít sp_bindefault k navázání nového výchozího nastavení na sloupec, i když je preferováno použití DEFAULT omezení, nebo k aliasovému datovému typu bez odvázání stávajícího výchozího nastavení. Starý výchozí stav je přepsán. Nelze nastavit výchozí nastavení na systémový datový typ SQL Server nebo uživatelsky definovaný CLR typ. Pokud výchozí není kompatibilní se sloupcem, ke kterému jste ho navázali, SQL Server Database Engine vrátí chybovou zprávu při pokusu o vložení výchozí hodnoty, ne při přiřazení.
Existující sloupce datového typu aliasu dědí nový výchozí kód, pokud výchozí není přímo na ně navázáno nebo není futureonly specifikováno jako futureonly. Nové sloupce datového typu aliasu vždy dědí výchozí hodnotu.
Když přiřadíte výchozí nastavení ke sloupci, související informace se přidají do katalogového zobrazení sys.columns . Když přiřadíte výchozí kód na alias datový typ, související informace se přidají do katalogového zobrazení sys.types .
Povolení
Uživatel musí vlastnit tabulku, nebo být členem role správce systému na pevném serveru, případně rolí db_owner a db_ddladmin pevné databáze.
Examples
A. Přiřadit výchozí sloupec
Výchozí název today je definován v aktuální databázi pomocí .CREATE DEFAULT Následující příklad přiřazuje výchozí nastavení na sloupec HireDate tabulky Employee . Kdykoli je do tabulky Employee přidán řádek a data pro sloupec HireDate nejsou zadána, sloupec získá hodnotu výchozí today.
USE master;
GO
EXECUTE sp_bindefault 'today', 'HumanResources.Employee.HireDate';
B. Přiřaďte výchozí kód na alias datový typ
Výchozí název def_ssn a alias datový typ ssn již existují. Následující příklad váže výchozí def_ssn na ssn. Když je tabulka vytvořena, výchozí hodnota je děděna všemi sloupci, kterým je přiřazen alias datový typ ssn. Existující sloupce typu ssn také dědí výchozí def_ssn, pokud futureonly není specifikováno pro hodnotu @futureonly , nebo pokud má sloupec výchozí omezení přímo na něj. Výchozí nastavení vázaná na sloupce vždy mají přednost před výchozími nastaveními vázanými na datové typy.
USE master;
GO
EXECUTE sp_bindefault 'def_ssn', 'ssn';
C. Použijte futureonly tuto možnost
Následující příklad připojuje výchozí def_ssn kód na datový typ ssnaliasu . Protože futureonly je specifikováno, nejsou ovlivněny žádné existující sloupce typu ssn .
USE master;
GO
EXECUTE sp_bindefault 'def_ssn', 'ssn', 'futureonly';
D. Používejte vymezené identifikátory
Následující příklad ukazuje použití vymezených identifikátorů, [t.1], v @objname.
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.
Související obsah
- uložené procedury databázového stroje (Transact-SQL)
- VYTVOŘIT VÝCHOZÍ (Transact-SQL)
- DROP DEFAULT (Transact-SQL)
- sp_unbindefault (Transact-SQL)
- uložené procedury systému (Transact-SQL)