Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

cách đặt giá trị mặc định cho kiểu văn bản trong mysql

Tôi đã thay đổi not null thành null cho trường about us

CREATE TABLE IF NOT EXISTS `te` (
  `id` int(30) NOT NULL,
  `name` text NOT NULL,
  `address` text NOT NULL,
  `Aboutus` text NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Đây là trình kích hoạt của bạn BEFORE INSERT

CREATE TRIGGER new_insert
BEFORE INSERT ON `te`
FOR EACH ROW 
SET NEW.`Aboutus` = CASE WHEN NEW.Aboutus IS NULL THEN 'Not Updated' ELSE NEW.Aboutus END
;

Chèn mà không có Aboutus

INSERT INTO `te` (`id`, `name`, `address`) 
VALUES (1, 'name', 'address') ;

Chèn bằng Aboutus

INSERT INTO `te` (`id`, `name`, `address`, `Aboutus`) 
VALUES (2, 'name', 'address', 'Aboutus') ;

Chèn bằng cách chuyển Aboutus null

INSERT INTO `te` (`id`, `name`, `address`, `Aboutus`) 
VALUES (3, 'name', 'address', null) ;

Bản trình diễn

Chỉnh sửa Như @garethD đã chỉ ra một trường hợp cho tình huống cập nhật, bạn cũng cần một trình kích hoạt khác trên BEFORE UPDATE vì vậy nếu null xuất hiện trong bản cập nhật thì aboutus phải được cập nhật dưới dạng Not Updated

CREATE TRIGGER update_trigger
BEFORE UPDATE ON `te`
FOR EACH ROW 
SET NEW.`Aboutus` = CASE WHEN NEW.Aboutus IS NULL THEN 'Not Updated' ELSE NEW.Aboutus END
;

UPDATE te
SET AboutUs = NULL;

Bản trình diễn 2



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. có hàm group_concat trong ms-access không?

  2. Làm thế nào để khởi tạo vùng chứa mysql khi được tạo trên Kubernetes?

  3. Chọn hàng ngẫu nhiên trong MySQL

  4. Làm thế nào để chèn dữ liệu json vào bảng?

  5. Ứng dụng Android có thể kết nối trực tiếp với cơ sở dữ liệu mysql trực tuyến không