【问题标题】:Before insert triggert in mysql在mysql中插入触发器之前
【发布时间】:2016-01-09 16:21:44
【问题描述】:

我正在尝试使用触发器将更新的值插入另一个表。我有两个表(table1 和 table2)。

我想将 table1 的新主键以十六进制值复制到 table2 中的非主键字段。主键是整数类型,另一个字段是varchar。

代码如下:

delimiter /

drop trigger if exists a /
create trigger a before insert on table1 for each row 

begin
 insert into table2 set table1ID= hex(new.id);
end /

insert into table1 set name='Ronnie';

但是,问题是当我插入 table1 时,主键不会添加到 table2。它将添加 0。

这些是表格:

    create table table1 (
    id          integer         not null auto_increment primary key,
    name        varchar(45)     not null
    );

create table table2 (
    id          integer         not null auto_increment primary key,
    table1ID    varchar(45)     not null
    );

【问题讨论】:

  • @GordonLinoff 我修好了,谢谢

标签: mysql sql database triggers


【解决方案1】:

您的触发器是“插入前”,新生成的 id 尚不可用。将其更改为“插入后”:

create trigger a after insert on table1 for each row 
begin
 insert into table2 (warehouseID) values (hex(new.id));
end /

请看here

【讨论】:

  • 我误解了这个问题。我认为 OP 意味着第二个表中的 id 没有被设置。
猜你喜欢
  • 2017-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-30
  • 2012-12-11
  • 2014-02-20
  • 2018-04-17
  • 2015-01-04
相关资源
最近更新 更多