有两个这样的表:
CREATE TABLE rooms (rid CHAR PRIMARY KEY);
CREATE TABLE users (uid INT PRIMARY KEY, rid CHAR FOREIGN KEY REFERENCES rooms(rid))
目标是重命名 rid 的键(值,而不是表或列),如下所示:
BEGIN TRANSACTION;
UPDATE rooms
SET rid = "9"||SUBSTRING(rid, 2)
WHERE TEXT(rid) LIKE "5%";
UPDATE users
SET rid = "9"||SUBSTRING(rid, 2)
WHERE TEXT(rid) LIKE "5%";
END TRANSACTION;
当然,这会导致外键约束错误。
在重命名的上下文中,经常调用“sp_rename”。但我是这样理解的,它只适用于表和列,而不适用于值。
如何重命名外键约束的值?
.
解决了:
BEGIN TRANSACTION;
ALTER TABLE users
DROP CONSTRAINT users_rid_fkey,
ADD FOREIGN KEY (rid) REFERENCES rooms(rid) ON UPDATE CASCADE ON DELETE RESTRICT;
UPDATE rooms
SET rid = '9'||SUBSTRING(rid, 2)
WHERE rid LIKE '5%';
END TRANSACTION;