我有一个 View ,想将一个属性设为主键。
CREATE VIEW filedata_view
AS SELECT num PRIMARY KEY, id, ST_TRANSFORM(the_geom,900913) AS the_geom
FROM filedata
但是报错
ERROR: syntax error at or near "PRIMARY"
LINE 2: AS SELECT num PRIMARY KEY, id, ST_TRANSFORM(the_geom,900913)...
如何做到这一点?
最佳答案
Postgresql 中的 View 不能有主键。
你基本上是以错误的方式在 View 上创建约束,应该在表上创建约束,但是一些 DBMS 确实支持使用这种语法在 View 上添加约束,比如 oracle:
ALTER VIEW VIEW_NAME ADD PRIMARY KEY PK_VIEW_NAME DISABLE NOVALIDATE;
You can specify only unique, primary key, and foreign key constraints on views, and they are supported only in DISABLE NOVALIDATE mode.
所以他们只是为了兼容性才支持它,如果你想有一个主键来停止在 filedata 表的 num 列中插入重复数据,你应该这样做通过更改 filedata 表并在其上添加主键,或者从一开始就在 num 列上创建主键的表。
关于postgresql - 如何将主键添加到 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11667508/