Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的SQL输出语句不工作?_Sql_Postgresql_Sql Insert - Fatal编程技术网

为什么我的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列数据类型为整数。