我的表具有TEXT主键
CREATE TABLE tbl1{
a1 TEXT PRIMARY KEY,
...
);
((a1
列是另一个表中的外键)
如何更改a1
的值?
如果我这样做
更新tbl1 SET a1 =吗?在哪里a1 =?
我收到约束违规错误
您不应该更改主键;最好使用INTEGER PRIMARY KEY,并且将实际的URL作为普通数据列。
如果您确实想更改作为外键目标的键,则应将外键约束声明为deferred,以便能够在同一事务中调整外键值。
问题是您的表具有单列,该列是主键,并且是另一张表的外键。这表明数据库的数据库设计是错误的。除非您可以更改数据库结构,否则需要在该其他表中添加正确的值才能更改主键值。那就是“插入表constrainingTable(key,val)值(A,B)”,然后执行更新tbl set a1 = A,其中a1 = KEY。忽略了人们告诉您永远不要更改主键的信息,有关如何构建主键的理论体系非常丰富。主键应该唯一地标识一行的值列(请参见数据库理论),例如,典型的键是PNR,SSN,序列号,移动电话号码,有时还包括名称,地址,街道,国家/地区等多个值。仅当您生成新值或使用适当的主键遇到实际问题时,才应使用生成的键。