CREATE DEFAULT (Transact-SQL)

Berlaku untuk: SQL Server (semua versi yang didukung) Azure SQL Managed Instance Database Azure SQL

Membuat objek yang disebut default. Saat terikat ke kolom atau jenis data 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 Microsoft SQL Server mendatang. 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.

tautan topikIkon Konvensi Sintaks Transact-SQL

Sintaks

  
CREATE DEFAULT [ schema_name . ] default_name   
AS constant_expression [ ; ]  

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 dan yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

nama_skema
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 apa pun, kecuali yang berisi jenis data alias. Fungsi yang ditentukan pengguna tidak dapat digunakan. Sertakan karakter dan konstanta tanggal dalam tanda kutip tunggal ('); konstanta moneter, bilangan bulat, dan floating-point 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 di 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 digabungkan 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.

  • Kata kunci NILAI DEFAULT atau 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
NOT_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

A. Membuat default karakter sederhana

Contoh berikut membuat karakter default yang disebut unknown.

USE AdventureWorks2012;  
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 secara eksplisit menyatakan NULL dalam pernyataan INSERT.

Karena default bernama phonedflt tidak ada, pernyataan Transact-SQL berikut gagal. Contoh ini hanya untuk ilustrasi.

USE AdventureWorks2012;  
GO  
sp_bindefault 'phonedflt', 'Person.PersonPhone.PhoneNumber';  

Lihat juga

ALTER TABLE (Transact-SQL)
CREATE RULE (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)