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
姓氏和姓氏,因为aNULL
与任何其他字符串的连接会产生a 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