为什么LAST_INSERT_ID()返回外键

时间:2015-04-09 09:50:53

标签: mysql

我正在使用mysql数据库。当我想在我的数据库中添加一些示例数据时,我想返回最后一个插入ID,如下所示:

SELECT DISTINCT LAST_INSERT_ID() FROM facturatiedatabase.tblinvoice;

它返回customersID。

这张桌子我正在使用。

CREATE TABLE tblInvoice (       
        invoiceID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
        customerID INT,
        totalPriceExcl decimal(65,2),
        vat decimal(65,2),
        totalPriceIncl decimal(65,2),
        conditionState VARCHAR(100) NOT NULL DEFAULT 'In progress' ,
        createDate Date,
        invoiceNumber int ,
        CONSTRAINT FK_customerID_Invoice FOREIGN KEY (customerID) REFERENCES tblCustomers(customerID)
)ENGINE=InnoDB;

我的语法有问题或这是一个常见问题吗?是否有解决方法?

1 个答案:

答案 0 :(得分:1)

你错误地使用它。

来自文档:

  

LAST_INSERT_ID()(不带参数)返回BIGINT(64位)值   表示为其设置的第一个自动生成的值   最近执行的INSERT的AUTO_INCREMENT列   声明影响这样一个专栏。例如,插入一行后   生成一个AUTO_INCREMENT值,你可以得到像这样的值   这样:

请注意,该示例不查询表。它基于当前的连接。

mysql> SELECT LAST_INSERT_ID();
        -> 195

如果您插入tblInvoice然后运行SELECT LAST_INSERT_ID(),您将获得invoiceID

所以一个有效的例子是:

INSERT INTO tblInvoice (columns) VALUES (data);
SELECT LAST_INSERT_ID(); -- The invoiceID generated from above insert

如果您真正想要的是上次创建的发票ID,请尝试:

SELECT MAX(invoiceID) FROM tblInvoice

不完美,但应该足以满足您的需求。