我有一张桌子:
CREATE TABLE person (
person_id INTEGER NOT NULL,
parent_person_id INTEGER REFERENCES person(person_id),
CONSTRAINT PK_person_id PRIMARY KEY (person_id)
);
是否需要在parent_person_id列上创建索引或者是否自动创建?
答案 0 :(得分:1)
您无需在parent_person_id
上创建索引。引用列上需要索引,而不是引用列。
另外,请注意创建同桌关系存在一些限制。在MySQL网站上,在foreign-key relationships部分,它读取“如果ON UPDATE CASCADE或ON UPDATE SET NULL递归更新它在级联期间先前更新的同一个表,它就像RESTRICT一样。
这意味着您无法使用自引用ON UPDATE CASCADE
或ON UPDATE SET NULL
操作。这是为了防止级联更新导致的无限循环。“
这是MySQL的已知限制,您应该注意防止明显无意义的错误。
答案 1 :(得分:0)
仅在InnoDB中自动索引外键。在引用表中,必须有一列 其中外键列以相同顺序列为第一列。 如果索引不存在,则会自动在引用表上创建这样的索引。