Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Batasan SQL DEFAULT untuk Menyisipkan Kolom dengan Nilai Default ke Tabel SQL Server

Untuk menyisipkan data ke dalam tabel yang memiliki kolom dengan batasan default, kita dapat menggunakan batasan DEFAULT ke nilai default dalam tabel. Artikel ini akan membahas aspek-aspek berikut:

  • Batasan DEFAULT dan izin yang diperlukan untuk membuatnya.
  • Menambahkan batasan DEFAULT saat membuat tabel baru.
  • Menambahkan batasan DEFAULT ke tabel yang ada.
  • Memodifikasi dan Melihat definisi batasan menggunakan skrip T-SQL dan SSMS.

Apa itu DEFAULT CONSTRAINT di SQL Server?

Batasan default menentukan nilai default untuk kolom.

Saat kita menjalankan pernyataan INSERT tetapi tidak menentukan nilai apa pun untuk kolom dengan batasan default yang dibuat, SQL Server memasukkan nilai default yang ditentukan dalam definisi batasan DEFAULT.

Untuk membuat batasan default, Anda memerlukan izin ALTER TABLE dan CREATE TABLE.

Menambahkan Batasan DEFAULT Saat Membuat Tabel Baru

Ada tabel bernama Detail Penjualan . Saat kita memasukkan data ke dalam tabel tanpa menentukan Sale_Qty nilai kolom, kueri harus memasukkan nol. Untuk melakukannya, saya membuat batasan default bernama DF_SalesDetails_SaleQty di Jumlah_Penjualan kolom.

USE demodatabase 
go 
CREATE TABLE salesdetails 
  ( 
     id           INT IDENTITY (1, 1), 
     product_code VARCHAR(10), 
     sale_qty     INT CONSTRAINT df_salesdetails_saleqty DEFAULT 0 
  ) 

Sekarang, mari kita uji perilaku kendala dengan memasukkan beberapa catatan dummy ke dalamnya. Jalankan kueri berikut:

INSERT INTO salesdetails 
            (product_code) 
VALUES     ('PROD0001')

Gunakan kueri berikut untuk melihat data dari tabel:

INSERT INTO salesdetails 
            (product_code) 
VALUES     ('PROD0001')

Keluaran

Seperti yang Anda lihat, nol telah dimasukkan ke dalam Sale_Qty kolom.

Saat membuat tabel, kami tidak menentukan nama batasan DEFAULT. SQL Server membuat batasan dengan nama unik yang dihasilkan sistem.

Buat tabel menggunakan kueri di bawah ini:

USE demodatabase 
go 
CREATE TABLE salesdetails 
  ( 
     id           INT IDENTITY (1, 1), 
     product_code VARCHAR(10), 
     sale_qty     INT DEFAULT 0 
  )

Jalankan skrip berikut untuk melihat nama batasan:

SELECT NAME             [Constraint name], 
       parent_object_id [Table Name], 
       type_desc        [Object Type], 
       definition       [Constraint Definition] 
FROM   sys.default_constraints 

Keluaran

SQL Server telah membuat batasan dengan nama yang dihasilkan sistem.

Menambahkan Batasan DEFAULT Ke Tabel yang Ada

Untuk menambahkan batasan pada kolom tabel yang ada, kami menggunakan ALTER TABLE ADD CONSTRAINT pernyataan:

ALTER TABLE [tbl_name] 
  ADD CONSTRAINT [constraint_name] DEFAULT [default_value] FOR [Column_name]

Dalam sintaks,

  • tbl_name :tentukan nama tabel tempat Anda ingin menambahkan batasan default.
  • nama_kendala :tentukan nama batasan yang diinginkan.
  • nama_kolom: tentukan nama kolom tempat Anda ingin membuat batasan default.
  • nilai_default: tentukan nilai yang ingin Anda sisipkan – integer, karakter, atau string karakter.

Bila kita tidak menentukan nilai nama_kolom dalam pernyataan INSERT, itu akan menyisipkan nilai yang ditentukan dalam nilai_default parameter.

Pertama, mari kita tambahkan Product_name kolom ke Detail Penjualan :

ALTER TABLE salesdetails 
  ADD product_name VARCHAR(500) 

Kami memasukkan data ke dalam tabel tanpa menentukan nilai kolom Product_name. Kueri harus menyisipkan T/A .

Untuk melakukannya, saya membuat batasan default bernama DF_SalesDetails_ProductName di Nama_Produk kolom. Kueri berikut membuat batasan default:

ALTER TABLE dbo.salesdetails 
  ADD CONSTRAINT df_salesdetails_productname DEFAULT 'N/A' FOR product_name 

Sekarang, mari kita amati perilaku kendala. Masukkan catatan tanpa menentukan nama produk:

INSERT INTO salesdetails 
            (product_code, 
             product_name, 
             sale_qty) 
VALUES     ('PROD0002', 
            'Dell Optiplex 7080', 
            20) 

INSERT INTO salesdetails 
            (product_code, 
             sale_qty) 
VALUES     ('PROD0003', 
            50)

Setelah catatan dimasukkan, jalankan kueri SELECT untuk melihat data:

USE demodatabase 
go 
SELECT * 
FROM   salesdetails 
go

Keluaran

Seperti yang Anda lihat pada gambar di atas, nilai Product_name kolom untuk PROD0003 adalah T/A .

Memodifikasi Batasan DEFAULT menggunakan Skrip T-SQL

Kita dapat mengubah definisi batasan default:pertama, hapus batasan yang ada, lalu buat batasan dengan definisi yang berbeda.

Misalkan, alih-alih menyisipkan T/A , kami ingin menyisipkan Tidak Berlaku . Pertama, kita harus menghapus DF_SalesDetails_ProductName paksaan. Jalankan kueri berikut:

ALTER TABLE dbo.salesdetails 
  DROP CONSTRAINT df_salesdetails_productname

Saat batasan dihilangkan, jalankan kueri untuk membuat batasan:

ALTER TABLE dbo.salesdetails 
  ADD CONSTRAINT df_salesdetails_productname DEFAULT 'Not Applicable' FOR 
  product_name 

Sekarang, mari kita masukkan catatan tanpa menentukan nama produk:

INSERT INTO salesdetails 
            (product_code, 
             sale_qty) 
VALUES     ('PROD0004', 
            10)

Jalankan pernyataan SELECT untuk melihat data dari SalesDetails tabel:

USE demodatabase 
go 
SELECT * 
FROM   salesdetails 
go

Keluaran

Seperti yang Anda lihat, nilai Product_name kolom Tidak Berlaku.

Melihat Batasan DEFAULT Menggunakan SSMS

Kita dapat melihat daftar batasan DEFAULT menggunakan SQL Server Management Studio dan menanyakan tampilan manajemen dinamis.

Buka SSMS dan perluas Database > Database Demo > Detail Penjualan > Batasan :

Anda dapat melihat dua batasan bernama DF_SalesDetails_SaleQty dan DF_SalesDetails_ProductName dibuat.

Cara lain untuk melihat batasan dengan menanyakan sys.default_constraints . Kueri berikut mengisi daftar batasan default dan definisinya:

SELECT NAME                  [Constraint name], 
       Object_name(parent_object_id)[Table Name], 
       type_desc             [Consrtaint Type], 
       definition            [Constraint Definition] 
FROM   sys.default_constraints

Keluaran

Kita dapat menggunakan sp_helpconstraint prosedur tersimpan untuk melihat daftar batasan yang dibuat pada tabel:

EXEC Sp_helpconstraint 'SalesDetails'

Keluaran

kunci_kendala kolom menunjukkan definisi batasan default.

Menghilangkan Batasan

Kita dapat menghilangkan batasan dengan beberapa cara. Kita dapat melakukannya dengan menggunakan salah satu metode berikut:

  • Pernyataan ALTER TABLE DROP CONSTRAINT.
  • JAUHKAN pernyataan DEFAULT.

Lepaskan Batasan Menggunakan Perintah ALTER TABLE DROP CONSTRAINT

Untuk menghilangkan batasan, kita dapat menggunakan ALTER TABLE DROP CONSTRAINT memerintah. Sintaksnya sebagai berikut:

Alter table [tbl_name] drop constraint [constraint_name]

Dalam sintaks,

  • tbl_name: tentukan nama tabel yang memiliki kolom dengan batasan default.
  • nama_kendala: tentukan nama batasan yang ingin Anda hapus.

Misalkan kita ingin menghapus DF_SalesDetails_SaleQty batasan dari Detail Penjualan meja. Jalankan kueri:

ALTER TABLE dbo.salesdetails 
  DROP CONSTRAINT [DF_SalesDetails_SaleQty] 

Jalankan kueri di bawah ini untuk memverifikasi bahwa batasan telah dihapus:

SELECT NAME                  [Constraint name], 
       Object_name(parent_object_id)[Table Name], 
       type_desc             [Consrtaint Type], 
       definition            [Constraint Definition] 
FROM   sys.default_constraints

Keluaran

Batasan telah dihilangkan.

Hapus Batasan DEFAULT Menggunakan Pernyataan DROP DEFAULT

Sekarang, mari kita pahami bagaimana kita dapat menghapus batasan default menggunakan DROP DEFAULT penyataan. Sintaks DROP DEFAULT pernyataannya sebagai berikut:

DROP DEFAULT [constraint_name]
  • nama_kendala: tentukan nama batasan yang ingin Anda hapus.

Untuk menghilangkan batasan menggunakan DROP DEFAULT pernyataan, jalankan kueri berikut:

IF EXISTS (SELECT NAME 
           FROM   sys.objects 
           WHERE  NAME = 'DF_SalesDetails_ProductName' 
                  AND type = 'D') 
DROP DEFAULT [DF_SalesDetails_ProductName]; 

Ringkasan

Dengan demikian, kami telah memeriksa beberapa aspek penting dari pekerjaan dengan batasan default. Kami telah mempelajari cara membuat batasan default saat membuat tabel baru atau menambahkan batasan default pada kolom tabel yang ada.

Selain itu, kami telah menjelajahi kasus modifikasi definisi batasan default, melihat detail batasan default menggunakan cara yang berbeda, dan menghapus batasan default.

Kami berharap informasi ini dan contoh praktis yang telah kami periksa akan membantu pekerjaan Anda.

Baca Juga

SQL INSERT INTO SELECT:5 Cara Mudah Menangani Duplikat


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengapa kesalahan terkait jaringan atau spesifik contoh terjadi saat membuat koneksi ke SQL Server?

  2. Kunci asing ke kunci komposit

  3. Tetapkan hasil sql dinamis ke variabel

  4. Kesalahan nama kolom yang ambigu pada satu server tertentu

  5. Cara Mengubah Kolom dari Null menjadi Tidak Null di Tabel SQL Server - Tutorial SQL Server / T-SQL Part 52