在mysql的下一条记录中插入最后的记录字段

时间:2014-02-18 08:24:29

标签: mysql insert record

我在mysql中有一个表。它有一些以前的记录。它的字段是a,b和c。有时我会在此表中插入一条记录,例如具有不同值的记录:

$query = "INSERT INTO table(a, b, c) VALUES('1', '0', '2')";

值是字符。似乎表中的最后一条记录是5,6,4。我的意思是a = 5,b = 6和c = 4,我想插入一条新记录。我的值是1和0和2,但我希望你帮助我这个方法: 当b == 0时,我不想保存它,而是想要保存表中的最后一个字段。例如,我插入1,0,2,它只插入一个= 1和c = 2,但它插入表中的最后一个字段,而不是它是6,它是6。

类似的东西:

if(false)
{
    $query = "INSERT INTO table(a, b, c) VALUES('1', The Last Value In Table, '2')";
}

我宁愿不读表的最后记录并使用它的值,因为它可以降低我的速度,速度非常重要。最好使用自动执行它的mysql命令。

1 个答案:

答案 0 :(得分:1)

当您需要最后插入的记录的数据时,您必须从某处获取它。首先想到的是:读取表格并查找最后插入的记录,这是您不想要的,可能是因为表格太大而无法快速访问数据。

所以你需要一个查询表,只包含最后插入的值(即一个记录):

create table last_insert_mytable(a varchar, b varchar, c varchar);

你用触发器填充:

create trigger trg_mytable_last_insert after insert on mytable
  for each row begin
    delete from last_insert_mytable;
    insert into last_insert_mytable (a, b, c) values (new.a, new.b, new.c);
  end;

所以你的insert语句如下所示:

insert into mytable(a, b, c) 
values ('1', (select b from last_insert_mytable), '2');

或(如果last_insert_mytable中已有记录):

insert into mytable(a, b, c) 
select '1', b, '2' from last_insert_mytable;

请记住,每次插入都会因触发而变慢。因为只有一个记录要处理,所以它可能比在mytable中查找最后一个插入记录要快。这取决于mytable的大小。每次插入mytable都会发生这种情况。如果很少需要查找最新记录,那么偶尔进行慢速查找可能会比每次进行稍慢的插入更好。好吧,试试吧。