如何删除2表中有关系的记录?

时间:2011-12-19 06:46:32

标签: sql sql-server database sql-server-2008

在Image中,我想从Profile和Login表中删除记录或行,其中Profile表与Profile表中的Login By Id和Login表中的Profileid有关。 enter image description here 我使用这个查询:

DELETE      Profile.Id , Profile.Lastname, Profile.Name, Profile.Phone, Profile.Countryid,      Profile.Email, Profile.[Address], Profile.Typeid, Profile.[Status], Profile.Regdate, 
                     Login.[Password] Login.Username, Login.Id AS Loginid, Login.Profileid
FROM            Login INNER JOIN Profile ON Login.Profileid = Profile.Id

WHERE        Profile.Id = 4

但是,当我运行此查询时,我得到此错误Microsoft Sql Server 2008:

  

Msg 102,Level 15,State 1,Line 1   ','。

附近的语法不正确

执行此操作是否适当的查询删除作业? 如果不是我该怎么做?我的意思是查询应该如何?

3 个答案:

答案 0 :(得分:1)

为什么不做这样的事情,

delete from profile where profile_id = 4

delete from login where profile_id = 4

虽然您可能希望为外键设置级联选项。这样,您只需要从配置文件表中删除条目,并且其他表中的所有行将自动删除,其中profile id = 4。 (或者从配置文件表中删除的任何ID。)

答案 1 :(得分:1)

您应该查看delete的语法。

您还需要两个删除语句。每张桌子一个。

delete from login where profileid = 4

delete from profile where id = 4

答案 2 :(得分:0)

试试这个:

DELETE FROM Login  WHERE Profile.Id = 4  --fist execute delete from child with FK

DELETE FROM Profile WHERE Profile.Id = 4    -- then execute delete from parent PK 

首先从登录表中删除包含[FK] Profile.Id = 4的记录。

然后如果登录表上没有[FK] Profile.Id = 4,那么您现在可以在配置文件表[PK] Profile.Id = 4上删除它。

此致