次のような 2 つのテーブルがあります。
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;