我有一个表,看起来有点像这个 actors(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
,因为 NULL
与任何其他字符串的连接会产生 NULL
。在每列或连接的字符串上酌情使用 COALESCE()
。
edit: 以下示例仅在 NULL
时设置 stage_name
。否则,您可以在 INSERT
语句中指定 stage_name
,它将被保留。
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
关于sql - MySQL - 将字段的默认值设置为字符串连接函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/360467/