为什么我的SQL输出语句不工作?
执行以下两个查询时:为什么我的SQL输出语句不工作?,sql,postgresql,sql-insert,Sql,Postgresql,Sql Insert,执行以下两个查询时: INSERT INTO Orders (CustomerID) OUTPUT INSERTED.OrderID VALUES ('1'); INSERT INTO Orders (CustomerID) OUTPUT INSERTED.* VALUES ('1'); 我得到以下例外情况: org.postgresql.util.PSQLException:错误:输出处或附近出现语法错误 订单表是使用以下方法创建的: CREATE TABLE Orders (
INSERT INTO Orders (CustomerID)
OUTPUT INSERTED.OrderID
VALUES ('1');
INSERT INTO Orders (CustomerID)
OUTPUT INSERTED.*
VALUES ('1');
我得到以下例外情况:
org.postgresql.util.PSQLException:错误:输出处或附近出现语法错误
订单表是使用以下方法创建的:
CREATE TABLE Orders
(
OrderID SERIAL PRIMARY KEY,
CustomerID int NOT NULL,
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
我做错了什么?感谢相当于SQL Server中的输出在PostgreSQL中返回。请试试这个
INSERT INTO Orders (CustomerID)
values('1')
returning CustomerID;
您也可以使用*
INSERT INTO Orders (CustomerID)
values('1')
returning *;
output子句不是的一部分。这是一个好主意
这也是非标准退货
如果使用了on CONFLICT DO UPDATE子句,可选的RETURNING子句将导致INSERT根据实际插入或更新的每一行计算并返回值。这对于获取默认值(如序列号)非常有用。但是,允许使用表列的任何表达式。返回列表的语法与SELECT的输出列表的语法相同。仅返回成功插入或更新的行。例如,如果一行被锁定但未更新,因为发生冲突,请执行更新。。。如果不满足子句条件,则不会返回该行
没有虚拟插入表,它位于插入的末尾
test=> create table foo ( id bigserial primary key, name text );
CREATE TABLE
test=> INSERT INTO foo (name) VALUES ('test') returning *;
id | name
----+------
1 | test
博士后有输出吗?我认为它使用返回。您在哪里发现输出应该工作?请注意,“1”是字符串,而不是整数值。跳过引用,只需执行值1;如果ID列数据类型为整数。