0

我有一个表,其中有一ID列(主键自动递增)和一列名称。

我想根据格式生成的 ID 列值在插入时自动填充名称列的值

<IDColumnValue>_School

我知道有两种方法可以做到这一点

  1. 使用触发器
  2. 先插入行,然后根据插入的行 id 列值更新其列值

但实际上我想让这个字段不可为空,但要使用第二个选项,我必须让它可以为空。

在插入行时是否有任何直接的方法可以做到这一点,以便我可以使该字段不可为空?

4

2 回答 2

0

正如我在评论中所说,您可以为该name列使用临时值。您可以使用如下请求:

INSERT INTO `table` VALUES('', 'name') /*let's assume name is the real name you want to insert*/

我不确定如何使用触发器,但你可能想写这样的东西:

delimiter #

CREATE TRIGGER update_name_after_insert INSERT ON `table`
for each row
begin
  update `table` set name = CONCAT_WS("_", id, name)
end#
于 2013-07-24T08:33:44.597 回答
0

它适用于 firebird,但我认为它必须适用于 MySQL,因为 MySQL 有new/old运算符。带有字段 B 和 C(非空)的表 XYZ 的波纹管触发器。

CREATE OR ALTER trigger xyz_bi0 for xyz
active before insert position 0
AS
begin
  new.c=new.b||' some text';--this construction must work in MySQL
end
于 2013-07-24T09:35:25.010 回答