1. Ràng buộc DEFAULT

Ràng buộc DEFAULT được sử dụng để đặt một giá trị mặc định nào đó cho cột. Giá trị mặc định sẽ được thêm vào tất cả các bản ghi sau khi được thêm vào bảng, nếu không có giá trị nào được chỉ định vào trong cột thì giá trị mặc định sẽ tự động được thêm vào cột.

Cú pháp để thêm ràng buộc DEFAULT vào câu lệnh tạo bảng như sau:

CREATE TABLE table_name (
    column1 datatype DEFAULT value,
    column2 datatype,
    column3 datatype,
   ....
);

Trong đó:

  • CREATE TABLE là câu lệnh hay từ khóa cần có để tạo bảng
  • table_name là tên của bảng cần tạo
  • column1, column2, column3… là tên các cột thuộc trong bảng
  • datatype là kiểu dữ liệu của từng cột
  • DEFAULT là ràng buộc cho cột
  • value là giá trị ta muốn đặt làm mặc định cho cột

Nếu như bảng đã được tạo ra trước đó, và ta cần bổ xung ràng buộc DEFAULT vào một cột nào đó trong bảng ta có thể sử dụng câu lệnh sau:

ALTER TABLE table_name
ADD CONSTRAINT name_default
DEFAULT value FOR column_name;

Trong câu lệnh trên: name_default là tên của ràng buộc DEFAULT do ta tự đặt, column_name là tên cột mà ta muốn thêm ràng buộc DEFAULT

Trường hợp ta cần xóa đi ràng buộc DEFAULT sẽ dùng câu lệnh sau:

ALTER TABLE table_name
ALTER COLUMN column_name DROP DEFAULT;

2. Ví dụ DEFAULT

Trong ví dụ dưới đây, tôi sẽ tạo bảng ConNguoi  bao gồm các cột là: ID, Ho, Ten, DiaChi, ThanhPho trong bảng này tôi muốn rằng nếu như dữ liệu ở cột ThanhPho bị bỏ trống khi thực hiện thêm hay cập nhật dữ liệu thì giá trị mặc định sẽ được thêm vào là ‘Ha Noi’

CREATE TABLE ConNguoi (
    ID int NOT NULL PRIMARY KEY,
    Ho varchar(25) NOT NULL,
    Ten varchar(25) NOT NULL,
    DiaChi nvarchar(255),
    ThanhPho nvarchar(255) DEFAULT 'Ha Noi',
);

Ví dụ tiếp theo, tôi sẽ tạo ra một bảng có tên là DatHang gồm các cột đó là: ID, SoLuong, NgayDat và giả sử khi dữ liệu được thêm vào bảng DatHang và bỏ trống dữ liệu cho cột NgayDat thì tôi sẽ lấy mặc định ngày hiện tại vào trong cột NgayDat. Hàm GETDATE() sẽ lấy ngày, tháng, năm hiện tại để làm giá trị mặc định cho cột NgayDat nếu như cột này bị bỏ trống!

CREATE TABLE DatHang (
    ID int NOT NULL PRIMARY KEY,
    SoLuong int NOT NULL,
    NgayDat date DEFAULT GETDATE()
);

Sau khi bảng DatHang được tạo ra, tôi cần bổ xung thêm ràng buộc DEFAULT cho cột SoLuong có giá trị mặc định bằng 0. Để làm việc này tôi sẽ sử dụng câu lệnh như sau:

ALTER TABLE DatHang
ADD CONSTRAINT df_DatHang
DEFAULT 0 FOR SoLuong;

Và để xóa đi một ràng buộc DEFAULT trong cột SoLuong tôi sẽ dùng cú pháp như sau:

ALTER TABLE DatHang
ALTER COLUMN SoLuong DROP DEFAULT;

Chú ý: Ràng buộc DEFAULT chỉ được tự động thêm giá trị mặc định vào cột khi cột đó bị bỏ trống dữ liệu khi có các thao tác thêm, cập nhật dữ liệu vào bảng.