小编典典

如何在mysql中设置文本类型的默认值

sql

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

这里的“ te”表由4个字段组成,分别是id,名称,地址,Aboutus,Aboutus是可选的,这意味着我如何通过phpmyadmin
sql将默认文本更新为db中的Profile。


阅读 298

收藏
2021-05-05

共1个答案

小编典典

我已将关于我们的字段的值从非null更改为null

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;

这是你的触发器 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
;

插入时不带 Aboutus

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

插入 Aboutus

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

通过传递null插入 Aboutus

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

演示版

编辑 至于 @garethD指出了更新方案的情况下,还需要在另一个触发BEFORE UPDATE因此,如果空出现在更新那么关于我们应该进行更新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;
2021-05-05