我创建了这样的表:
BEGIN;
CREATE TABLE tag (
id SERIAL,
name VARCHAR(255) UNIQUE NOT NULL,
description VARCHAR(511) NOT NULL DEFAULT '',
PRIMARY KEY(id)
);
CREATE TABLE fandom (
id SERIAL,
name VARCHAR(255) UNIQUE NOT NULL,
link TEXT UNIQUE NOT NULL,
PRIMARY KEY(id)
);
CREATE TABLE character (
fandom_id INT REFERENCES fandom(id), -- allowed to be null
link TEXT UNIQUE,
PRIMARY KEY(id)
) INHERITS (tag);
COMMIT;
接下来我做类似的事情
INSERT INTO tag (name) VALUES ('John Doe')
在插入时,我不知道“John Doe”是否是一个字符,但我可以稍后检查。我想做类似的事情
BEGIN;
DELETE FROM tag WHERE name='John Doe';
INSERT INTO character (name) VALUES ('John Doe');
COMMIT;
在我看来,问题在于第二个“John Doe”的 ID 会增加,现在如果删除有效的话,通过 ID 引用标签“John Doe”的所有外键都会减少 1。
有没有办法简单地将“John Doe”行从“标签”移动到“字符”?
我是一个数据库菜鸟,所以欢迎在评论中补充说明。