Sql 在表中找不到主键列
我向表中添加了约束主键,查询成功运行。我面临的困境是无法在表中找到主键列Sql 在表中找不到主键列,sql,postgresql,primary-key,Sql,Postgresql,Primary Key,我向表中添加了约束主键,查询成功运行。我面临的困境是无法在表中找到主键列 ALTER TABLE salesdata ADD CONSTRAINT pk_salesdata PRIMARY KEY( "Address_of_New_Home","Sq_Ft","Build_Spec", "Realtor_Sale","Can","Actual_Sale_Date") 当我这样做时: select * from salesdata 它显示以前的所有列,没有主键列(pk_salesdata) 更
ALTER TABLE salesdata
ADD CONSTRAINT pk_salesdata PRIMARY KEY( "Address_of_New_Home","Sq_Ft","Build_Spec", "Realtor_Sale","Can","Actual_Sale_Date")
当我这样做时:
select * from salesdata
它显示以前的所有列,没有主键列(pk_salesdata)
更令人困惑的是:
select pk_salesdata from salesdata
数据库显示:
ERROR: column "pk_salesdata" does not exist
我想向表中添加主键列。我诚恳地请求数据库管理员的帮助。您创建了
主键
,但是
pk_salesdata
,但它只是一个约束名ALTER TABLE salesdata ADD COLUMN mynewautoincrementid SERIAL PRIMARY KEY;
Primary Kay表中的约束当您向任何列添加主键时,您可以选择列名来显示数据看起来您已经将要包含在主键中的列用双引号括起来了。这不是这个命令的工作方式。删除引号,重新运行命令,看看会发生什么
ALTER TABLE salesdata
ADD CONSTRAINT pk_salesdata PRIMARY KEY( Address_of_New_Home,Sq_Ft,Build_Spec, Realtor_Sale,Can,Actual_Sale_Date)
通过SQLGUI添加主索引可能更容易
这是用于创建主键的MS文档页面
https://msdn.microsoft.com/en-us/library/ms189039.aspx
注意:由于您添加的主键不希望它作为列可用。
pk\u salesdata
是主键约束的名称,因此您的主键是括号内所有列的组合。您可以选择的不是数据库中的列,而是约束的名称。您不能选择“this”输入一列,其中“this”指约束的名称。您可以向表中添加另一列,也可以将主键从当前复合键更改为新添加的列(前提是该列是唯一且非空的)。创建预期会复制一个或多个其他列的列是一个坏主意。在功能上从来没有这样做的必要。出于性能方面的原因,创建这样的非规范化有时是有用的,但性能似乎不是您关心的重要问题。获取一堆不同的字段并将它们合并到一个新列中是没有意义的,因为它是键。你到底想在这里完成什么?谢谢你,为什么这不是一个好主意?新家的地址是多余的,所以需要做出一个不掩盖地址的约束。添加mynewautoincrementid只会给每一行一个整数,这并不能阻止重复项的出现。因为索引列越多(在本例中为聚集索引),每个DML的I/O就越多。组合聚集索引是在后台创建的新的不可见列,它是唯一的,并且只有一列。您的QRIE无法正确使用索引,您的查询速度较慢。