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

时间:2014-05-27 09:55:54

标签: 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,name,address,Aboutus,Aboutus是可选的意味着我如何通过phpmyadmin sql将默认文本更新为db中的Profile;

2 个答案:

答案 0 :(得分:9)

对于我们的字段

,我已将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) ;

Demo

修改由于@garethD指出了更新方案的情况,您还需要BEFORE UPDATE上的另一个触发器,因此如果更新中出现null,那么aboutus应更新为{{1 }}

Not Updated

Demo 2

答案 1 :(得分:0)

对于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'

解决了这个问题。