我有一个看起来有点像这个演员的表(forename,surname,stage_name);
我想更新stage_name以使其默认值为
forename." ".surname
以便
insert into actors(forename, surname) values ('Stack', 'Overflow');
会产生记录
'Stack' 'Overflow' 'Stack Overflow'
这可能吗?
谢谢 :)
MySQL不支持DEFAULT
列定义选项中的计算列或表达式.
您可以在触发器中执行此操作(需要MySQL 5.0或更高版本):
CREATE TRIGGER format_stage_name BEFORE INSERT ON actors FOR EACH ROW BEGIN SET NEW.stage_name = CONCAT(NEW.forename, ' ', NEW.surname); END
您可能还想创建一个类似的触发器BEFORE UPDATE
.
注意NULL
forename和surname,因为a NULL
与任何其他字符串的concat 产生一个NULL
.使用COALESCE()
每列或对所连接字符串作为适合.
编辑:以下示例stage_name
仅在设置时设置NULL
.否则,您可以stage_name
在INSERT
语句中指定,并保留它.
CREATE TRIGGER format_stage_name BEFORE INSERT ON actors FOR EACH ROW BEGIN IF (NEW.stage_name IS NULL) THEN SET NEW.stage_name = CONCAT(NEW.forename, ' ', NEW.surname); END IF; END