【问题标题】:MySQL SELECT LAST_INSERT_ID() for compound key. Is it possible?MySQL SELECT LAST_INSERT_ID() 用于复合键。是否可以?
【发布时间】:2008-12-16 19:28:16
【问题描述】:

我可以在 MySQL 中获取复合键的 LAST INSERT ID() 吗?

【问题讨论】:

    标签: mysql last-insert-id compound-key


    【解决方案1】:

    是的。一个表中不能有多个自增字段。

    CREATE TABLE foo (
      id1 int(11) NOT NULL auto_increment,
      id2 int(11) NOT NULL default '0',
      PRIMARY KEY  (id1, id2)
    );
    
    INSERT INTO foo VALUES (DEFAULT, 2);
    
    SELECT LAST_INSERT_ID(); -- returns 1, the value generated for id1
    

    LAST_INSERT_ID() 仅返回声明为AUTO_INCREMENT 的列的值。没有函数可以返回系统生成的复合主键中的值。您应该已经知道该值,因为您只是在 INSERT 声明中给出了它。棘手的情况是触发器或其他东西覆盖了该值。

    【讨论】:

    • "一个表中不能有多个自增字段。"我不知道这一点,所以我尝试创建一个包含两个自增字段的表,但出现此错误:表定义不正确;只能有一个自动列,并且必须定义为一个键。
    • 所以,7 年后,答案成立。
    猜你喜欢
    • 2014-07-02
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 1970-01-01
    相关资源
    最近更新 更多