Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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_Primary Key - Fatal编程技术网

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

我想向表中添加主键列。我诚恳地请求数据库管理员的帮助。

您创建了
主键
,但是

  • 您可以从“新家地址”、“平方英尺”、“建筑规格”、“房地产经纪人销售”、“Can”、“实际销售日期”列创建组合主键,这不是一个好主意

  • 您的主键有一个别名
    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无法正确使用索引,您的查询速度较慢。