如何在ASP.NET(C#)中删除记录以及所有相关记录
我有此代码从我的表中删除摄影师,但是,摄影师id是我表“图像”中的外键,当我删除摄影师时,我想删除我正在删除的摄影师在“图像”表中的所有图像。我该怎么做如何在ASP.NET(C#)中删除记录以及所有相关记录,c#,sql,asp.net,C#,Sql,Asp.net,我有此代码从我的表中删除摄影师,但是,摄影师id是我表“图像”中的外键,当我删除摄影师时,我想删除我正在删除的摄影师在“图像”表中的所有图像。我该怎么做 ... else if (e.CommandName == "Slet") { SqlConnection conn = new SqlConnection(); conn.ConnectionString = ConfigurationManager.ConnectionStrings["DatabaseCo
...
else if (e.CommandName == "Slet")
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString =
ConfigurationManager.ConnectionStrings["DatabaseConnectionString1"].ToString();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "DELETE FROM photographers WHERE photographer_id = @photographer_id";
cmd.Parameters.Add("@photographer_id", SqlDbType.Int).Value = e.CommandArgument.ToString();
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
Repeater1.DataBind();
}
这是我的图像表:
CREATE TABLE [dbo].[images] (
[image_id] INT IDENTITY (1, 1) NOT NULL,
[image] NVARCHAR (50) NOT NULL,
[FK_photographer] INT NOT NULL,
PRIMARY KEY CLUSTERED ([billede_id] ASC),
CONSTRAINT [FK_fotograf] FOREIGN KEY ([FK_fotograf]) REFERENCES [dbo].[Fotografer] ([fotograf_id]),
);
这是我的摄影师表:
CREATE TABLE [dbo].[photographers] (
[photographer_id] INT IDENTITY (1, 1) NOT NULL,
[photographer_name] NVARCHAR (50) NOT NULL,
PRIMARY KEY CLUSTERED ([photographer_id] ASC)
);
设置外键约束。这将在您删除摄影师时自动删除图像
不需要自己重新发明轮子。设置外键约束。这将在您删除摄影师时自动删除图像
没有必要通过自己来重新发明轮子。同样的方法-
DELETE FROM images WHERE photographer_id = @photographer_id
建议先删除图像,然后删除摄影师。如果您的表具有物理FK,则在删除所有从属项之前,它将不允许您删除摄影师
希望这有帮助。同样的方法-
DELETE FROM images WHERE photographer_id = @photographer_id
建议先删除图像,然后删除摄影师。如果您的表具有物理FK,则在删除所有从属项之前,它将不允许您删除摄影师
希望这能有所帮助。更好的方法是你可以在程序中完成 但这里有一个简单的替代方法
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
conn.Open();
cmd.CommandText = "DELETE FROM photographers WHERE photographer_id = @photographer_id";
cmd.Parameters.Add("@photographer_id", SqlDbType.Int).Value = e.CommandArgument.ToString();
cmd.ExecuteNonQuery();
//deleted from photographers
cmd.CommandText = "DELETE FROM Images WHERE photographer_id = @photographer_id";
cmd.Parameters.Add("@photographer_id", SqlDbType.Int).Value = e.CommandArgument.ToString();
cmd.ExecuteNonQuery();
//deleted from images
更好的方法是你们可以在程序中完成 但这里有一个简单的替代方法
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
conn.Open();
cmd.CommandText = "DELETE FROM photographers WHERE photographer_id = @photographer_id";
cmd.Parameters.Add("@photographer_id", SqlDbType.Int).Value = e.CommandArgument.ToString();
cmd.ExecuteNonQuery();
//deleted from photographers
cmd.CommandText = "DELETE FROM Images WHERE photographer_id = @photographer_id";
cmd.Parameters.Add("@photographer_id", SqlDbType.Int).Value = e.CommandArgument.ToString();
cmd.ExecuteNonQuery();
//deleted from images
正如我在评论中提到的,您可以使用级联删除。您可以修改您的表格,如下所示
ALTER TABLE开坯机
添加约束fk_
外键(摄影师id)
参考摄影师(摄影师id)
删除级联;
正如我在评论中提到的,您可以使用级联删除。您可以修改您的表格,如下所示
ALTER TABLE开坯机
添加约束fk_
外键(摄影师id)
参考摄影师(摄影师id)
删除级联;
您可以添加级联删除或先检查照片表,然后再删除照片。请注意,您可以(并且应该)通过添加级联删除或先检查照片表,然后删除照片来改进代码。请注意,您可以(并且应该)先添加级联删除或先检查照片表,然后删除照片通过改进您的代码。您好,也许我应该指定此选项,但我是一名初学者,我不太确定如何设置“级联删除”@tekar:请参见:@tekar首先使用此查询删除FK约束:ALTER TABLE dbo.bilder DROP constraint FK_fotograf
。现在使用此查询添加带有层叠删除的FK约束:ALTER TABLE dbo.billeder添加约束FK\u fotograf\u Cascade外键(FK\u摄影师)引用dbo.delete Cascade上的摄影师(摄影师id)
。您好,也许我应该指定此项,但我是初学者,我不太确定如何设置“级联删除”@tekar:请参见:@tekar首先使用此查询删除FK约束:ALTER TABLE dbo.billeder DROP constraint FK_fotograf
。现在使用此查询添加带有级联删除的FK约束:ALTER TABLE dbo.billeder添加约束FK_fotograf_级联外键(FK)在DELETE CASCADE
中引用了dbo.摄影师(摄影师id)。谢谢,但是我应该在哪里添加这个?在表定义中?在表定义中?在哪里?(我在问题中添加了两个表)我很抱歉,因为某种原因,我不能那样读它,我的大脑被烧焦了,但我使用了你的方法,现在似乎起作用了:)谢谢!没问题,很高兴它有帮助。谢谢,但我应该在哪里添加这个?在表定义中?在表定义中?在表定义中?(我在问题中添加了两个表)我的天啊,我很抱歉,因为某种原因,我不能那样读它,我的大脑被烧焦了,但我用了你的方法,现在它似乎起作用了:)谢谢你!没问题,很高兴它有帮助。