我有一个使用 sql 数据源的 GridView 。现在我想使用 GridView 的删除命令删除一条记录,问题是单个记录是基于从多个表收集的信息,所以我必须从所有这些表中删除部分信息才能完全删除记录,这是我的表结构。
- 项目
- 项目文章
- 文章状态
- 项目分配
Projects 是一个包含有关项目的完整信息的表,如项目名称、客户名称等,它有主键“project_id”
ProjectArticles 是一个表,其中包含有关与一个项目关联的文章数量的信息,例如,如果一个项目有 3 篇文章,则该表有 3 行,其中包含以下数据
article_id project_id
1 --------- 1
2 --------- 1
3 --------- 1
其中“article_id”是主键。
文章状态是一个表格,其中包含有关一篇文章的信息,例如
status_id- article_id- filename ---- writer_status- editor_status- sales_status
1 -------- 1 --------- Any filename -- done --------- pending ------ pending
"status_id"为主键
最后,ProjectAssignments 是一个表,其中包含有关将哪个项目分配给哪个作者的数据,它以 assignment_id 作为主键并使用 project_id 作为外键,与上图类似。
关于如何删除包含其他表中所有相关信息的完整项目的任何想法?
我做了这个示例查询,但它不起作用,sql management studio 说“无法解析查询文本”。
DELETE P, A FROM Projects AS P, ProjectArticles AS A WHERE P.project_id = A.project_id AND P.project_id = @project_id
在上面的查询文本中,我只使用了两个表来检查它是否有效但它不起作用,我们将不胜感激。
最佳答案
当您想删除与用作外键的特定主键相关的所有行时,级联很有用 在引用表中。
例如:- 主表或父表 Tab1(Id int (primary key) ,Name varchar(10)) 子表 Tab2(Class int, Id int (Tab1(Id)的refrential key,address varchar(10))
现在,当您想从记录中删除 1 个号码 ID 时,最好使用“ON DELETE CASCADE”,但是当您只想删除一个时 记录在子表中,则交易成功。
关于sql - 使用 gridview delete 命令从多个表中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5988859/