我创建了一个查询为
的表Create table unititem (ID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (ID));
而不是通过以下查询
来改变它 Alter table unititem AUTO_INCREMENT=1;
我还有一个表tablename
,并希望通过添加引用表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)
如何解决这个问题?任何建议。
答案 0 :(得分:0)
要修复查询,只需删除AUTO_INCREMENT
即可。尝试:
Alter table tablename add column Unititemid INT NOT
NULL ;
您不希望(也不能拥有)外键在新表中自动增加。
AUTO_INCREMENT
存在以自动为表行生成新的唯一ID,但在外键上使用它是没有意义的。
考虑表unititem
。它的ID为1
,2
,3
。 tablename
Unititemid
1
,2
,3
在tablename
中也有3行。现在,您在另一个表AUTO_INCREMENT
中创建一个新行。您如何期望3
在这里工作?它会自动将4
增加到4
,但这没有任何意义,因为在itemitem中没有AUTO_INCREMENT
。所以override func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
let footerView = UIView(frame: CGRect(x:0, y:0, width:tableView.frame.size.width, height: 40))
footerView.backgroundColor = UIColor.lightGray
switch(section) {
case 2: // change only 3rd cell's footer
let label = UILabel(frame: footerView.frame)
label.text = "Section 5"
footerView.addSubview(label)
return footerView
default: break
}
return nil
}
只对原始表有意义,而不是在另一个表上。