Để chèn giá trị mặc định vào cột NOT NULL khi giá trị đầu vào là NULL, bạn có thể sử dụng hàm IF() kết hợp IS NULL hoặc IFNULL().
Cú pháp
INSERT INTO ten_bang(cot1, cot2) VALUES('gia_tri', IF(cot1 IS NULL, DEFAULT(cot2), 'thong_bao'));
Ví dụ minh họa
Tạo bảng với cột UserPostMessage có DEFAULT:
mysql> CREATE TABLE Post (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> UserName VARCHAR(10),
-> UserPostMessage VARCHAR(50) NOT NULL DEFAULT 'Hi Good Morning !!!'
-> );
Chèn dữ liệu sử dụng IF:
mysql> INSERT INTO Post(UserName, UserPostMessage)
-> VALUES('John', IF(UserName IS NULL, DEFAULT(UserPostMessage), 'Hello'));
mysql> INSERT INTO Post(UserName, UserPostMessage)
-> VALUES(NULL, IF(UserName IS NULL, DEFAULT(UserPostMessage), 'Hello'));
mysql> INSERT INTO Post(UserName, UserPostMessage)
-> VALUES('Carol', IF(UserName IS NULL, DEFAULT(UserPostMessage), 'Hello'));
Kết quả:
+----+----------+---------------------+ | Id | UserName | UserPostMessage | +----+----------+---------------------+ | 1 | John | Hello | | 2 | NULL | Hi Good Morning !!! | | 3 | Carol | Hello | +----+----------+---------------------+
Khi UserName là NULL, cột UserPostMessage nhận giá trị mặc định 'Hi Good Morning !!!'. Ngược lại, nhận giá trị 'Hello'.