我在更新記錄到derby db表中使用外鍵時遇到問題。考慮下面的兩個表QUESTIONCHOICE和QUESTIONANSWER。在表問題答案的記錄是QUESTIONCHOICE的一個子集,有一個外鍵約束,以確保問題答案表始終QUESTIONCHOICE表的子集。表記錄更新由外鍵約束停止
現在我正在嘗試使用下面的查詢更新QUESTIONCHOICE表中的一條記錄,並通過外鍵約束來停止更新。
更新「USER」。「QUESTIONCHOICE」設置「CHOICE」='GET1',其中「QID」= 10001和「CHOICE」='GET';
表'QUESTIONCHOICE'上的更新導致密鑰(10001,GET)的外鍵約束'QUESTIONANSWER_FK'的違規。該聲明已被回滾。
我該如何更新QUESTIONCHOICE表中的記錄? 我可以刪除QUESTIONANSWER表中的記錄,更新QUESTIONCHOICE表中的記錄,然後在QUESTIONANSWER中插入記錄。但對我來說這聽起來不錯。
也可以創建QUESTIONANSW作爲一個VIEW而不是一個TABLE,如果是的話我將如何使QUESTIONCHOICE表的子集?
請建議。
感謝,
-Vijay Selvaraj
----------
CREATE TABLE USER.QUESTIONCHOICE(
QID INT NOT NULL,
Choice VARCHAR(100) NOT NULL,
CONSTRAINT QUESTIONCHOICE_PK PRIMARY KEY (QID, Choice),
CONSTRAINT QUESTIONCHOICE_FK FOREIGN KEY (QID)
REFERENCES user.questionbank (QuestionID)
);
----------
create table USER.QUESTIONANSWER(
QID INT NOT NULL,
Answer VARCHAR(100) NOT NULL,
CONSTRAINT QUESTIONANSWER_PK PRIMARY KEY (QID, Answer),
CONSTRAINT QUESTIONANSWER_FK FOREIGN KEY (QID, Answer)
REFERENCES USER.QUESTIONCHOICE (QID, Choice)
);
是的,即使我想到了這個想法。讓我介紹一個專欄,簡化表格設計。謝謝。 – 2011-02-11 13:11:48