在c#里如何编写删除sql中多个表中的数据的代码

2024-12-25 22:20:18
推荐回答(3个)
回答1:

---清空数据库db_test中所有用户表中的数据
use db_test
go
CREATE PROCEDURE
sp_DeleteAllData
AS
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'--禁用约束
EXEC sp_MSForEachTable 'ALTER TABLE ? DISABLE TRIGGER ALL'--禁用触发器
EXEC sp_MSForEachTable 'DELETE FROM ?'--清数据
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'--还原约束
EXEC sp_MSForEachTable 'ALTER TABLE ? ENABLE TRIGGER ALL'--还原触发器
EXEC sp_MSFOREACHTABLE 'SELECT * FROM ?'--检查表内数据
go
exec sp_DeleteAllData
--这样就会删除 db_test库中,所有表的数据,但是表结构仍然存在,操作相对危险,慎用。希望对你有帮助

回答2:

几个表存在关联吧?这样的数据牵涉到数据的完整性.
常用方法:
1:在主表上建立on deleted的触发器,在删除主表数据时自动删除子表相关行.这样只需要调用删除主表的sql语句就可以.
2:使用(带有事务处理的)存储过程,在存储过程中将关联的表依次做数据删除,好处是程序只需要调用一次,增加事务处理的好处是保证删除的一次性完成,有一张表不成功则过程回滚.
删除的次递:从子往父,先删除外键数据,再删除主表.如果存在多级关联,逻辑一样.

回答3:

直接把删除多个表数据的语句写在一起就可以了