我有一个有 TEXT 主键的表
CREATE TABLE tbl1{
a1 TEXT PRIMARY KEY,
...
);
(该a1
列是另一个表中的外键)
如何更改 的值a1
?
如果我做
更新 tbl1 设置 a1 = ?哪里 a1 = ?
我收到约束违规错误
我有一个有 TEXT 主键的表
CREATE TABLE tbl1{
a1 TEXT PRIMARY KEY,
...
);
(该a1
列是另一个表中的外键)
如何更改 的值a1
?
如果我做
更新 tbl1 设置 a1 = ?哪里 a1 = ?
我收到约束违规错误
你永远不应该改变主键;使用INTEGER PRIMARY KEY并让实际 URL 成为普通数据列会是一个更好的主意。
如果您确实想要更改作为外键目标的键,则应将外键约束声明为延迟,以便您能够在同一事务中调整外键值。
问题是您的表有一个列,它是主键,并且是另一个表的外键。这表明数据库的数据库设计是错误的。除非您可以更改数据库结构,否则您需要在该其他表中添加正确的值以更改您的主键值。即“插入表约束表(key,val)值(A,B)”,然后执行update tbl set a1 = A where a1 = KEY。忽略那些告诉你永远不应该更改主键的人,关于应该如何构建主键的理论体系。主键应该唯一标识一行的值列(参见数据库理论),例如典型的键是 PNR、SSN、序列号、手机号码,有时还有多个值,如姓名、地址、街道、国家。