Bagikan melalui


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.

Konvensi sintaks transact-SQL

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)