[英]how to set default value for text type in mysql
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,name,address,Aboutus,Aboutus是可选的,意味着如何通过phpmyadmin sql将默认文本更新为db中的Profile
关于我们字段,我已将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
上的另一个触发器,因此如果更新中出现null,那么aboutus应该更新为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;
对于Ubuntu 16.04:
如何在MySQL 5.7中禁用严格模式:
编辑文件/etc/mysql/mysql.conf.d/mysqld.cnf
如果mysql.cnf中存在以下行
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
然后用它替换它
sql_mode='MYSQL40'
除此以外
只需在mysqld.cnf中添加以下行
sql_mode='MYSQL40'
这解决了问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.