Postgresql - INSERT RETURNING INTO ambiguous column reference

£可爱£侵袭症+ 提交于 2019-12-19 11:55:09

问题


Can someone politely explain this crazyness?

INSERT INTO "dbo"."UserProfile" ("FirstName")
VALUES('John')
RETURNING "UserProfileId" INTO _UserProfileId;

throws an ambiguous reference error, however this correctly executes:

INSERT INTO "dbo"."UserProfile" ("FirstName")
VALUES('John')
RETURNING "dbo"."UserProfile"."UserProfileId" INTO _UserProfileId;

_UserProfileId is a declared integer variable. I couldn't find any references to this syntax in the manual or why on earth this would be ambiguous in any way.


回答1:


IN and OUT parameters (including columns in RETURNS TABLE) are visible inside every SQL command in the body of a plpgsql function.

If you have columns of the same name in your query, you have to table-qualify them to make it unambiguous. In your case, the table name would do:

... RETURNING "UserProfile"."UserProfileId" INTO _UserProfileId;

Details in the manual here.

Related:

  • How to return result of a SELECT inside a function in PostgreSQL?
  • Naming conflict between function parameter and result of JOIN with USING clause


来源:https://stackoverflow.com/questions/39261902/postgresql-insert-returning-into-ambiguous-column-reference

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!