Bagikan melalui


BUAT DEFAULT (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceDatabase SQL di Microsoft Fabric

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 DEFAULT , gunakan definisi default yang dibuat menggunakan kata kunci 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 mengambang tidak memerlukan tanda kutip. Data biner harus didahului oleh 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.

CREATE DEFAULT pernyataan tidak dapat dikombinasikan dengan pernyataan Transact-SQL lainnya dalam satu batch.

Default harus dihilangkan sebelum membuat yang baru dengan nama yang sama. Dan, default harus tidak terikat dengan mengeksekusi 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.
  • DEFAULT VALUES Kata kunci 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 Bawaan NULL NULL
NOT NULL Kesalahan Bawaan Kesalahan Kesalahan

Untuk mengganti nama default, gunakan sp_rename Untuk laporan secara default, gunakan sp_help.

Izin

Untuk menggunakan CREATE DEFAULT, minimal, pengguna harus memiliki CREATE DEFAULT izin dalam database saat ini dan ALTER izin pada skema di mana default sedang dibuat.

Contoh

J. Membuat default karakter dasar

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

EXECUTE sp_bindefault 'phonedflt', 'Person.PersonPhone.PhoneNumber';