【发布时间】:2011-02-18 15:53:46
【问题描述】:
我有三个表,其中一个存储用户基本信息,另一个是个人资料信息,最后一个是存储用户图片。
当我删除这些用户时,我需要删除这些表中的所有数据。所以我写了一个这样的查询。
DELETE Kullanicilar FROM Kullanicilar
INNER JOIN ProfilBilgileri ON Kullanicilar.ID = ProfilBilgileri.UyeID
INNER JOIN UyeResim ON Kullanicilar.ID = UyeResim.UyeID
WHERE Kullanicilar.ID=@ID
但它只是从“Kullanicilar”表中删除数据。
有什么建议吗?
编辑:我使用的是 MSSQL 2008,但托管公司 2000,所以我需要兼容的代码。
【问题讨论】:
-
有人说使用触发器有风险,所以我没有使用。
-
sql是通用标签,你的意思是sqlsql-server吗? -
您可以查看外键上的级联删除。否则,您将需要 3 个不同的
delete语句(除了在 MySQL 中,我认为您可以在DELETE中指定多个表我相信...) -
如果使用得当,触发器是没有风险的。任何告诉你这一切的人都只是一个不称职的数据库开发人员。但是它们就像任何其他代码一样,它们可能有错误,而且这些错误可能很严重,因此需要对它们进行广泛的测试。它们是用于许多目的的好工具,但它们是错误的工具。
标签: sql sql-server tsql sql-server-2000