Есть две таблицы, как это:Rename ЗНАЧЕНИЯ первичных и внешних ключей
CREATE TABLE rooms (rid CHAR PRIMARY KEY);
CREATE TABLE users (uid INT PRIMARY KEY, rid CHAR FOREIGN KEY REFERENCES rooms(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;
Я принял вариант 2. Большое спасибо! – Chickenmarkus