CREATE DEFAULT (Transact-SQL)
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Membuat objek yang disebut default. Saat terikat ke tipe data kolom atau alias, default menentukan nilai yang akan disisipkan ke dalam kolom tempat objek terikat (atau ke semua kolom, jika dari jenis data alias), ketika tidak ada nilai yang secara eksplisit disediakan selama penyisipan.
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. Sebagai gantinya, gunakan definisi default yang dibuat menggunakan kata kunci DEFAULT ALTER TABLE atau CREATE TABLE.
Sintaks
CREATE DEFAULT [ schema_name . ] default_name
AS constant_expression [ ; ]
Argumen
schema_name
Nama skema tempat default berada.
default_name
Nama default. Nama default harus sesuai dengan aturan untuk pengidentifikasi. Menentukan nama pemilik default bersifat opsional.
constant_expression
Ekspresi yang hanya berisi nilai konstanta (tidak dapat menyertakan nama kolom atau objek database lainnya). Anda dapat menggunakan konstanta, fungsi bawaan, atau ekspresi matematika, kecuali yang berisi jenis data alias. Fungsi yang ditentukan pengguna tidak dapat digunakan. Sertakan konstanta karakter dan tanggal dalam tanda kutip tunggal ('); konstanta moneter, bilangan bulat, dan titik pecahan tidak memerlukan tanda kutip. Data biner harus didahului dengan 0x, dan data moneter harus didahului dengan tanda dolar ($). Nilai default harus kompatibel dengan jenis data kolom.
Keterangan
Anda hanya bisa membuat nama default dalam database saat ini. Dalam database, nama default harus unik berdasarkan skema. Saat Anda membuat default, gunakan sp_bindefault untuk mengikatnya ke kolom atau ke jenis data alias.
Jika default tidak kompatibel dengan kolom yang terikat, SQL Server menghasilkan pesan kesalahan saat mencoba menyisipkan nilai default. Misalnya, N/A tidak dapat digunakan sebagai default untuk kolom numerik .
Jika nilai default terlalu panjang untuk kolom yang terikat, nilainya dipotong.
Pernyataan CREATE DEFAULT tidak dapat dikombinasikan dengan pernyataan Transact-SQL lainnya dalam satu batch.
Default harus dihilangkan sebelum membuat yang baru dengan nama yang sama. Dan, defaultnya harus tidak terikat dengan menjalankan sp_unbindefault sebelum dihilangkan.
Jika kolom memiliki default dan aturan yang terkait dengannya, nilai default tidak boleh melanggar aturan. Default yang berkonflik dengan aturan tidak pernah disisipkan, dan SQL Server menghasilkan pesan kesalahan setiap kali mencoba menyisipkan default.
Saat terikat ke kolom, nilai default disisipkan saat:
Nilai tidak disisipkan secara eksplisit.
Nilai DEFAULT atau kata kunci DEFAULT digunakan dengan INSERT untuk menyisipkan nilai default.
Jika Anda menentukan NOT NULL saat membuat kolom dan Tidak membuat default untuk kolom tersebut, pesan kesalahan akan dihasilkan saat pengguna gagal membuat entri di kolom tersebut. Tabel berikut mengilustrasikan hubungan antara keberadaan default dan definisi kolom sebagai NULL atau NOT NULL. Entri dalam tabel memperlihatkan hasilnya.
Definisi kolom | Tidak ada entri, tidak ada default | Tidak ada entri, default | Masukkan NULL, tidak ada default | Masukkan NULL, default |
---|---|---|---|---|
NULL | NULL | Default | NULL | NULL |
BUKAN NULL | Kesalahan | Default | kesalahan | kesalahan |
Untuk mengganti nama default, gunakan sp_rename. Untuk laporan tentang default, gunakan sp_help.
Izin
Untuk menggunakan CREATE DEFAULT, minimal, pengguna harus memiliki izin CREATE DEFAULT di database saat ini dan izin ALTER pada skema di mana default sedang dibuat.
Contoh
J. Membuat default karakter sederhana
Contoh berikut membuat karakter default yang disebut unknown
.
USE AdventureWorks2022;
GO
CREATE DEFAULT phonedflt AS 'unknown';
B. Mengikat default
Contoh berikut mengikat default yang dibuat dalam contoh A. Default hanya berlaku jika tidak ada entri yang ditentukan untuk Phone
kolom Contact
tabel.
Catatan
Menghilangkan entri apa pun berbeda dari yang secara eksplisit menyatakan NULL dalam pernyataan INSERT.
Karena default bernama phonedflt
tidak ada, pernyataan Transact-SQL berikut gagal. Contoh ini hanya untuk ilustrasi.
USE AdventureWorks2022;
GO
sp_bindefault 'phonedflt', 'Person.PersonPhone.PhoneNumber';
Lihat Juga
ALTER TABLE (Transact-SQL)
BUAT ATURAN (Transact-SQL)
BUAT TABEL (Transact-SQL)
DROP DEFAULT (Transact-SQL)
DROP RULE (Transact-SQL)
Ekspresi (Transact-SQL)
INSERT (Transact-SQL)
sp_bindefault (T-SQL)
sp_help (T-SQL)
sp_helptext (T-SQL)
sp_rename (T-SQL)
sp_unbindefault (T-SQL)