![](/img/trans.png)
[英]ASP.net c# SQL. If record combination exists in table, delete the records
[英]How to delete a record along with all related records in ASP.NET (C#)
我有這段代碼可以從表中刪除攝影師,但是,photograph_id是表“ images”中的外鍵,當我刪除攝影師時,我想刪除攝影師在“ images”表中的所有圖像刪除。 我怎么做?
...
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();
}
這是我的IMAGES表:
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]),
);
這是我的PHOTOGRAPHERS表:
CREATE TABLE [dbo].[photographers] (
[photographer_id] INT IDENTITY (1, 1) NOT NULL,
[photographer_name] NVARCHAR (50) NOT NULL,
PRIMARY KEY CLUSTERED ([photographer_id] ASC)
);
在外鍵約束上設置級聯刪除 。 s when you delete a
攝影師s when you delete a
這將自動刪除Image。
無需自己動手改造輪子。
相同的方法-
DELETE FROM images WHERE photographer_id = @photographer_id
建議先刪除圖像,然后再刪除攝影師。 如果您的表具有物理FK,則將不允許您在刪除所有依賴項之前刪除攝影師。
希望這可以幫助。
正如我在評論中提到的,您可以使用級聯刪除 。 您可以像下面一樣更改表格。
ALTER TABLE billeder
ADD CONSTRAINT fk_photographer
FOREIGN KEY (photographer_id)
REFERENCES photographers (photographer_id)
ON DELETE CASCADE;
更好的方法是您可以在“過程”中進行操作,但這是替代和簡單的方法
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.