当前位置: 首页 > 面试题库 >

MySQL-将字段的默认值设置为字符串连接函数

陆敏学
2023-03-14
问题内容

我有一张表,看起来有点像这个演员(名字,姓氏,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姓氏和姓氏,因为aNULL与任何其他字符串的连接会产生a NULL。使用COALESCE()每列或对所连接字符串作为适合。

编辑: 以下示例stage_name仅在设置时设置NULL。否则,您可以stage_nameINSERT语句中指定,它将被保留。

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


 类似资料:
  • 我试图设置可变投掷SpEL在Spring启动应用程序: 应该来自应用程序-{profile}。财产。但是字段始终为空,即使已存在。 带有的代码可以正常工作,但包含空字符串。 我的问题是,如果使用SpEL的属性不存在,如何将null设置为variable。 upd:值来自特定于配置文件的属性文件

  • 问题内容: 这个问题已经在这里有了答案 : MySQL串联运算符 (6个答案) 3年前关闭。 我需要在MySQL查询中将字符串与字段值连接起来,以便向左联接两个表。 表一具有称为“ category_id”的列,该列具有诸如61、78、94之类的数字值。 表2的一列称为“查询”,它表示请求路由机制,其值包括“ product_id = 68”,“ category_id = 74”,“ manuf

  • 我有一个自定义的对象FlightRequest的机会对象,有一个金额提交的机会和FlightRequest。 我想在FlightRequest的Amount字段中将机会的金额提交值设置为默认值。因此,每当单击FlightRequest的新按钮时,金额输入应该已经与机会的金额字段一起输入 我使用的是标准页面布局,没有任何视觉力页面布局,不能使用它。 我看到有一个选项可以设置字段的默认值,但Oppor

  • 我在我的项目中使用Spring Boot Spring数据Postgresql Kotlin。 默认情况下,JPA对字符串字段使用varchar(255),因此我需要为我的所有字符串列添加@Col列(列定义="TEXT")。 当我不添加@Column时,有什么方法可以将文本设置为默认字符串?

  • 问题内容: 是否可以通过SQL语句确保列的默认值为空字符串而不是? 问题答案: 是-使用DEFAULT约束:

  • 问题内容: 我正在尝试使用Jackson将一些JSON对象映射到Java对象。JSON对象中的某些字段是必填字段(可以用标记),而某些字段是可选字段。 用Jackson映射之后,在JSON对象中未设置的所有字段在Java中都将具有空值。是否有类似的注释可以告诉Jackson为Java类成员设置默认值(如果为null)? 编辑:为了使问题更清楚,这里是一些代码示例。 Java对象: JSON对象可以