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