插入时基于其他列的计算字段值

时间:2013-07-24 07:51:27

标签: mysql

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

我希望在插入时根据格式

生成的ID列值自动填充名称列的值
<IDColumnValue>_School

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

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

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

    在插入行时是否有任何直接的方法可以让字段不可为空?

2 个答案:

答案 0 :(得分: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#

答案 1 :(得分:0)

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

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