![](/img/trans.png)
[英]Does CREATE TABLE … SELECT respect ORDER BY for AUTO_INCREMENT column?
[英]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的1
, 2
, 3
。 您还可以在3行tablename
与Unititemid
的1
, 2
, 3
。 现在,您在另一个表tablename
创建一个新行。 您希望AUTO_INCREMENT
在这里工作如何? 它将自动将3
递增到4
但这没有任何意义,因为unititem中没有4
。 因此, AUTO_INCREMENT
仅在原始表上有意义,而在另一个表上则没有意义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.