我有一个使用 CCK 内容字段来存储其大部分数据的 drupal 站点。
我想手动更改一些数据以指向不同的节点版本。
UPDATE content_field_table SET vid = '1234' WHERE nid = '12' AND vid = '123';
Run Code Online (Sandbox Code Playgroud)
问题是 content_field_table 有一个复合主键
PRIMARY KEY (`vid`,`delta`)
Run Code Online (Sandbox Code Playgroud)
因此,当我运行更新语句时,出现以下错误:
错误代码:1062 密钥“PRIMARY”的重复条目“52979-0”
如何根据需要更新视频?
主键必须是唯一的。因此,您不能将一条记录更改为与现有记录具有相同的 PK
例如,如果您从下面的 SQL 中获得任何记录,则无法完成您要执行的更新。您需要先进行一些其他更改或删除记录或删除 PK
SELECT SOURCE.delta,
SOURCE.vid,
TARGET.delta,
TARGET.vid
FROM content_field_table SOURCE
INNER JOIN content_field_table TARGET
ON SOURCE.delta = TARGET.delta
WHERE SOURCE.vid = '123'
AND TARGET.vid = '1234'
Run Code Online (Sandbox Code Playgroud)