删除具有外键约束的行

时间:2016-01-31 07:05:21

标签: mysql

我有一个教师表,其列FileId对应于Files表中的文件。当他/她替换我希望能够删除旧文件的文件时。我不想删除教师条目,只删除文件。当我编辑关系,以便它允许级联更新和删除,然后我运行存储过程下面它删除了教师条目,这不是所需的效果,请告诉我你是否有任何建议。 谢谢你的帮助

jqueryui-tabs

2 个答案:

答案 0 :(得分:2)

请确保在删除和更新时将引用的列(外键约束)设置为CASCADE 像

CONSTRAINT `job_status_ibfk_1` FOREIGN KEY (`jobseeker_id`)
 REFERENCES `jobseeker` (`jobseeker_id`) ON DELETE CASCADE ON UPDATE CASCADE

答案 1 :(得分:1)

我找到了一个解决方案:我首先声明了一个等于教师的fileId的变量,然后我将fileId设置为null,这样我就可以删除该文件而不受外键约束的限制,然后我用了用于查找要删除的正确文件的变量。如果有其他方法可以做到这一点,我仍然感兴趣...

DECLARE @FileIdNumber int
SELECT @FileIdNumber = [dbo].[Instructors].[FileId]
FROM [dbo].[Instructors]
WHERE [dbo].[Instructors].[Id] = @Id

Update [dbo].[Instructors] SET 

FileId = @FileId
WHERE @Id = Id

DELETE f FROM [dbo].[Files] f
WHERE f.Id = @FileIdNumber