lim*_*imp 3 mysql sql cascade foreign-keys
我认为ON DELETE CASCADE的意思是这不会发生.:\我有以下表格:
CREATE TABLE Tweets (
tweetID INTEGER NOT NULL AUTO_INCREMENT,
userID INTEGER NOT NULL,
content VARCHAR(140) NOT NULL,
dateTime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
hasPoll INTEGER NOT NULL,
visible INTEGER NOT NULL DEFAULT 1,
PRIMARY KEY (tweetID),
FOREIGN KEY (userID) REFERENCES Users(userID)
ON DELETE CASCADE
);
CREATE TABLE Polls (
pollID INTEGER NOT NULL AUTO_INCREMENT,
tweetID INTEGER NOT NULL,
pollOptionText VARCHAR(300),
PRIMARY KEY (pollID),
FOREIGN KEY (tweetID) REFERENCES Tweets(tweetID)
);
Run Code Online (Sandbox Code Playgroud)
问题是,当我尝试删除附加了Poll的推文时,我收到以下错误(通过Flask):
_mysql_exceptions.IntegrityError
IntegrityError: (1451, 'Cannot delete or update a parent row: a foreign key constraint fails (`twitter`.`polls`, CONSTRAINT `polls_ibfk_1` FOREIGN KEY (`tweetID`) REFERENCES `Tweets` (`tweetID`))')
Run Code Online (Sandbox Code Playgroud)
请帮忙!
这确实是重点on delete cascade.您收到错误,因为您的代码未on delete cascade从"poll" 声明为"tweet".
CREATE TABLE Polls (
pollID INTEGER NOT NULL AUTO_INCREMENT,
tweetID INTEGER NOT NULL,
pollOptionText VARCHAR(300),
PRIMARY KEY (pollID),
FOREIGN KEY (tweetID) REFERENCES Tweets(tweetID)
ON DELETE CASCADE
);
Run Code Online (Sandbox Code Playgroud)
当在"推文"中删除相应的行时,这将删除"民意调查"中的行.
| 归档时间: |
|
| 查看次数: |
4381 次 |
| 最近记录: |