![](/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.