Bagikan melalui


sp_bindefault (T-SQL)

Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance

Mengikat default ke kolom atau ke jenis data alias.

Penting

Fitur ini akan dihapus dalam versi SQL Server yang akan datang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. Kami menyarankan agar Anda membuat definisi default dengan menggunakan kata kunci DEFAULT dari pernyataan ALTER TABLE atau CREATE TABLE sebagai gantinya.

Konvensi sintaks transact-SQL

Sintaks

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

Argumen

[ @defname = ] N'defname'

Nama default yang dibuat oleh CREATE DEFAULT. @defname adalah nvarchar(776), tanpa default.

[ @objname = ] N'objname'

Nama tabel dan kolom, atau jenis data alias, yang defaultnya akan terikat. @objname adalah nvarchar(776), tanpa default. @objname tidak dapat didefinisikan dengan jenis varchar(max), nvarchar(max), varbinary(max), xml, atau CLR yang ditentukan pengguna.

Jika @objname adalah nama satu bagian, itu diselesaikan sebagai jenis data alias. Jika itu adalah nama dua atau tiga bagian, pertama-tama diselesaikan sebagai tabel dan kolom; dan jika resolusi ini gagal, resolusi diselesaikan sebagai jenis data alias. Secara default, kolom yang ada dari jenis data alias mewarisi @defname, kecuali default terikat langsung ke kolom. Default tidak dapat terikat ke teks, ntext, gambar, varchar(max), nvarchar(max), varbinary(max), xml, tanda waktu, atau kolom jenis yang ditentukan pengguna CLR, kolom dengan IDENTITY properti, kolom komputasi, atau kolom yang sudah memiliki DEFAULT batasan.

@objname dapat berisi tanda kurung siku ([ dan ]) sebagai pengidentifikasi yang dibatasi. Untuk informasi selengkapnya, lihat Pengidentifikasi database.

[ @futureonly = ] 'futureonly'

Digunakan hanya saat mengikat default ke jenis data alias. @futureonly adalah varchar(15), dengan default NULL. Ketika parameter ini diatur ke futureonly, kolom yang ada dari jenis data tersebut tidak dapat mewarisi default baru. Parameter ini tidak pernah digunakan saat mengikat default ke kolom. Jika @futureonly adalah NULL, default baru terikat ke kolom apa pun dari jenis data alias yang saat ini tidak memiliki default atau yang menggunakan default yang ada dari jenis data alias.

Mengembalikan nilai kode

0 (berhasil) atau 1 (kegagalan).

Keterangan

Anda dapat menggunakan sp_bindefault untuk mengikat default baru ke kolom, meskipun menggunakan DEFAULT batasan lebih disukai, atau ke jenis data alias tanpa mengikat default yang ada. Default lama ditimpa. Anda tidak dapat mengikat default ke jenis data sistem SQL Server atau jenis yang ditentukan pengguna CLR. Jika default tidak kompatibel dengan kolom yang telah Anda ikat, Mesin Database SQL Server mengembalikan pesan kesalahan saat mencoba menyisipkan nilai default, bukan saat Anda mengikatnya.

Kolom yang ada dari jenis data alias mewarisi default baru, kecuali default terikat langsung ke kolom tersebut atau di masa mendatang ditentukan sebagai futureonly. Kolom baru jenis data alias selalu mewarisi default.

Saat Anda mengikat default ke kolom, informasi terkait ditambahkan ke sys.columns tampilan katalog. Saat Anda mengikat default ke jenis data alias, informasi terkait ditambahkan ke sys.types tampilan katalog.

Izin

Pengguna harus memiliki tabel, atau menjadi anggota peran server tetap sysadmin , atau peran database tetap db_owner dan db_ddladmin .

Contoh

J. Mengikat default ke kolom

Default bernama today didefinisikan dalam database saat ini dengan menggunakan CREATE DEFAULT. Contoh berikut mengikat default ke HireDate kolom Employee tabel. Setiap kali baris ditambahkan ke Employee tabel dan data untuk HireDate kolom tidak disediakan, kolom mendapatkan nilai default today.

USE master;
GO

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

B. Mengikat default ke jenis data alias

Default bernama def_ssn dan tipe data alias bernama ssn sudah ada. Contoh berikut mengikat default def_ssn ke ssn. Saat tabel dibuat, default diwarisi oleh semua kolom yang diberi jenis ssndata alias . Kolom jenis ssn yang ada juga mewarisi default def_ssn, kecuali futureonly ditentukan untuk nilai @futureonly , atau kolom memiliki batas default langsung ke dalamnya. Default yang terikat ke kolom selalu diutamakan daripada default yang terikat ke jenis data.

USE master;
GO

EXEC sp_bindefault 'def_ssn', 'ssn';

C. futureonly Gunakan opsi

Contoh berikut mengikat default def_ssn ke jenis ssndata alias . Karena futureonly ditentukan, tidak ada kolom jenis ssn yang terpengaruh.

USE master;
GO

EXEC sp_bindefault 'def_ssn', 'ssn', 'futureonly';

D. Menggunakan pengidentifikasi yang dibatasi

Contoh berikut menunjukkan penggunaan pengidentifikasi yang dibatasi, [t.1], dalam @objname.

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.