繁体   English   中英

更新表查询时不会创建Auto_increment列

[英]Auto_increment Column does not create while updating table query

我创建一个表,其查询是

Create table unititem (ID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (ID));

比通过以下查询更改它

 Alter table unititem AUTO_INCREMENT=1;

我也有一个表tablename并且想要通过添加引用表unititem列来unitItemId进行unititem 我要执行的查询是

Alter table tablename add column Unititemid INT NOT
NULL AUTO_INCREMENT ;

但是当我执行此查询时,它给了我这个错误:

表定义不正确; 只能有一个自动列,并且必须将其定义为键

当我想使其成为外键时,它在以下查询中给出1005 error

Alter table tablename 
add column Unititemid INT NOT NULL AUTO_INCREMENT,
ADD FOREIGN KEY (Unititemid) REFERENCES unititem (ID) ;

我不知道我在做什么错。 有什么建议么?

Update1如建议的那样,我没有将unititemid添加为AUTO_INCREMENT

 ALTER TABLE tablename ADD COLUMN unititemid INT NOT NULL;

现在的问题是:如何使其成为外键? 当我使用以下查询时,它给出一个错误:

 ALTER TABLE tablename ADD FOREIGN KEY  (unititemid) REFERENCES unititem(ID);

错误:错误代码:1005无法创建表“ alnasar_inventory。#sql-a04_1”(错误号:150)
如何解决这个问题? 有什么建议么。

要解决此查询,只需删除AUTO_INCREMENT 尝试:

Alter table tablename add column Unititemid INT NOT
NULL ;

您不希望(也不能拥有)外键在新表中自动递增。

存在AUTO_INCREMENT可以自动为您的表行生成一个新的唯一ID,但是在外键上使用它没有任何意义。

考虑表unititem 它有ID的123 您还可以在3行tablenameUnititemid123 现在,您在另一个表tablename创建一个新行。 您希望AUTO_INCREMENT在这里工作如何? 它将自动将3递增到4但这没有任何意义,因为unititem中没有4 因此, AUTO_INCREMENT仅在原始表上有意义,而在另一个表上则没有意义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM