这不是一个问题,而是我发现的自生问题/问题和解决方案.我认为分享是不错的礼貌,因为我找不到完整的工作解决方案.
phpMyAdmin中生成的错误是:
"此表格不包含唯一列.网格编辑,复选框,编辑,复制和删除功能不可用."
根据您的具体情况,有几种可行的解决方案.
例如,只要您的所有AI或唯一标识符字段都是唯一的,您就可以简单地更改表并确保这是主键并设置为唯一值.
我在其中一张桌子上用这个解决方案解决了这个问题.
另一个表有多个AI int值,它们是Primary字段,但是有多个相同类型的值.
对此的简单修复就是将一列添加到表的末尾,作为Unique AI Int.基本上所有MySQL都说它需要在每条记录中使用唯一值来区分行.
希望这有用.
这让我很困惑.我经常在数据库表中使用复合主键.这种方法的不好的一面是,当我删除或编辑条目时,我还有额外的工作.但是,我觉得这种方法符合数据库设计的精神.
另一方面,有我的朋友,他们从不使用复合键,而是在表中引入另一个"id"列,而所有其他键只是FK.在编写删除和编辑过程时,它们的工作量要少得多.但是,我不知道它们如何保留数据条目的唯一性.
例如:
方式1
create table ProxUsingDept (
fkProx int references Prox(ProxID) NOT NULL,
fkDept int references Department(DeptID) NOT NULL,
Value int,
PRIMARY KEY(fkProx,fkDept)
)
Run Code Online (Sandbox Code Playgroud)
方式2
create table ProxUsingDept (
ID int NOT NULL IDENTITY PRIMARY KEY
fkProx int references Prox(ProxID) NOT NULL,
fkDept int references Department(DeptID) NOT NULL,
Value int
)
Run Code Online (Sandbox Code Playgroud)
哪种方式更好?使用第二种方法有什么不好的方面?有什么建议?
可能重复:
每个表都应该有一个主键吗?
如果您从未在任何地方引用ID,是否需要包含一个?表需要ID还是主键?