【发布时间】:2021-12-03 07:34:12
【问题描述】:
架构查询
-- GRAPH INFO TABLE--------------------------------------------------------------
CREATE TABLE GRAPH
(
graph_id CHAR(32) NOT NULL PRIMARY KEY,
name VARCHAR(1024) NOT NULL
);
INSERT INTO GRAPH set graph_id = MD5('graph1'),
name = 'graph1';
INSERT INTO GRAPH set graph_id = MD5('graph2'),
name = 'graph2';
INSERT INTO GRAPH set graph_id = MD5('graph3'),
name = 'graph3';
-- FIELD INFO TABLE--------------------------------------------------------------
CREATE TABLE FIELD_TEST
(
field_id CHAR(50) NOT NULL PRIMARY KEY,
name VARCHAR(500) NOT NULL
);
INSERT INTO FIELD_TEST set field_id = MD5('field1'),
name = 'field1';
INSERT INTO FIELD_TEST set field_id = MD5('field2'),
name = 'field2';
INSERT INTO FIELD_TEST set field_id = MD5('field3'),
name = 'field3';
-- GRAPH FIELD RELATION TABLE-----------------------------------------------------
CREATE TABLE GRAPH_FIELD_INFO_TEST
(
field_id CHAR(32) NOT NULL,
graph_id CHAR(32) NOT NULL,
PRIMARY KEY (graph_id, field_id),
CONSTRAINT GRAPH_FIELD_INFO_TEST_FIELD_field_id_fk
FOREIGN KEY (field_id) REFERENCES FIELD_TEST (field_id)
ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT GRAPH_FIELD_INFO_TEST_GRAPH_STORAGE_graph_id_fk
FOREIGN KEY (graph_id) REFERENCES GRAPH (graph_id)
ON UPDATE CASCADE ON DELETE CASCADE
);
INSERT INTO GRAPH_FIELD_INFO_TEST set field_id = MD5('field1'),
graph_id = MD5('graph1');
INSERT INTO GRAPH_FIELD_INFO_TEST set field_id = MD5('field2'),
graph_id = MD5('graph2');
INSERT INTO GRAPH_FIELD_INFO_TEST set field_id = MD5('field3'),
graph_id = MD5('graph3');
更新查询
UPDATE FIELD_TEST
SET name = 'new field1',
field_id = MD5('new field1')
WHERE field_id = MD5('field1');
错误
Query Error: Error: ER_ROW_IS_REFERENCED_2: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`GRAPH_FIELD_INFO_TEST`, CONSTRAINT `GRAPH_FIELD_INFO_TEST_FIELD_field_id_fk` FOREIGN KEY (`field_id`) REFERENCES `FIELD_TEST` (`field_id`) ON DELETE CASCADE ON UPDATE CASCADE)
如果我更改 FIELD_TEST 的 ID,
参考 FIELD_TEST 的 ID 更改 GRAPH_FIELD_INFO_TEST ID,
我在 GRAPH_FIELD_INFO_TEST 中将其设置为级联。
但是,由于以下错误,它失败了。
如果我更改GRAPH的ID,它可以正常工作,
但只有更改了 FIELD_TEST 的 ID 后才能正常工作。
我可以知道错误的原因吗?
【问题讨论】:
标签: mysql sql foreign-keys