我想从两个或多个相互链接的表中删除特定记录。
例如:我有两张桌子,Students 和 Winners 我想一次性从两张桌子上删除 Roy 和 Peter 的名字。
表:学生
> ID name class
> 1 Roy 2
> 2 James 3
> 3 Carl 4
> 4 Peter 4
> 5 Alice 5
表:获奖者
St_ID achievement
1 1
2 1
3 3
4 5
5 5
我有 100 多个表,其中 50 条特定记录要从所有表中删除。
您必须使用动态 SQL 查询来实现这一点
1-首先,您必须在临时表中列出所有具有相应数据库的表 2-为包含
Students
和Winners
dataTable的数据库构建查询你的脚本应该看起来像
这将导致如下查询(如果这些数据库包含
Students
和Winners
表)如果这是您在下面的问题中所要求的,我现在不知道(您的问题不像这个问题那样具体,所以我的回答是提供一般的动态 sql 逻辑)
您将不得不明确列出您需要从中删除的表。
其中一种情况是创建一个表,其中包含要从中删除的表列表,并根据具有特定姓名的学生应用适当
delete
的语句遍历每个表。id's
要遍历数据库中的所有表,您可以使用如下内容:
并且不要忘记
delete
在测试环境中进行测试。我认为正确的方法是首先从没有动态 sql 的学生表中删除记录并将删除的 ID 存储在临时表中。
像这样,
在上面的示例中,我不必每次都使用“where name in()”。我使用它一次并将其存储在临时表中。
例如我正在使用 Adventure DB,
从SQL 删除
和
在 SO 中回答。(必须适应你的情况)
编辑由于@NIC的评论(和DV?):
第一个选项: table_constraint (Transact-SQL)
和SO 中的一个例子
第二种选择:
准备桌子
删除行
在 SQL Server 13.0.1722.0 中测试 注意:DROP TABLE IF EXIST 可能在旧版本中不起作用