gpt4 book ai didi

mysql - 为什么 LAST_INSERT_ID() 返回外键

转载 作者:行者123 更新时间:2023-11-29 00:01:37 25 4
gpt4 key购买 nike

我正在使用 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;

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

最佳答案

你用错了。

来自文档:

LAST_INSERT_ID() (with no argument) returns a BIGINT (64-bit) value representing the first automatically generated value that was set for an AUTO_INCREMENT column by the most recently executed INSERT statement to affect such a column. For example, after inserting a row that generates an AUTO_INCREMENT value, you can get the value like this:

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

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

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

关于mysql - 为什么 LAST_INSERT_ID() 返回外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29535202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com