2011-12-19 139 views
1

和Image一样,我想从配置文件和登录表中删除一条记录或一行。配置文件表与配置文件表中的Login By Id和Login表中的Profileid具有关系。 enter image description here 我使用此查询:我如何从2表中删除有关系的记录?

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:

消息102,15级,状态1,行 语法错误靠近','。

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

+1

加油的人。至少查看'DELETE'语句的语法。 http://www.w3schools.com/sql/sql_delete.asp – 2011-12-19 06:54:55

回答

1

为什么不这样做,

delete from profile where profile_id = 4 

delete from login where profile_id = 4 

虽然你可能想有层叠设置的选项,为您的外键。这样,您只需从配置文件表中删除条目,其他表中的所有行将自动删除配置文件id = 4。 (或从配置文件表中删除的任何标识)。

+0

我不能使用级联,因为我的主人说,我应该提到,我想在我的程序中使用此查询使用Asp.net,我如何使用两个单独的查询当我点击A按钮? 。 – 2011-12-19 06:58:30

1

您应该查看delete的语法。

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

delete from login where profileid = 4 

delete from profile where id = 4 
+0

我想在我的程序中使用此查询使用Asp.net和我如何使用两个单独的查询,当我点击一个按钮? 。 – 2011-12-19 07:04:03

+0

@rezaasgary - 在一个execute语句中添加这两行应该完全可以。 – 2011-12-19 07:13:54

+0

当我这样做:http://uploadnow.org/image/334187-Capture.jpeg我得到这个错误:http://uploadnow.org/image/334188-Capture2.jpeg这意味着我必须删除Senduserid从消息是这样吗?如果是在另一方面,我必须删除所有记录从与配置文件表相关的所有表,右? – 2011-12-19 07:40:55

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

问候