SQL删除一个数据库内所有表的数据保留表结构

实现思路: 1.禁用所有约束,外键 2.禁用所有触发器 3.删除表数据 4.开启触发器 5.开启约束

CREATE PROCEDURE proc_deleteDateSql
 /*
  生成清除数据库表数据的脚本方法分享
 */
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 proc_deleteDateSql 

go

drop proc  proc_deleteDateSql
go

原文地址:https://www.cnblogs.com/lxss/p/10064558.html

时间: 2024-10-02 21:27:18

SQL删除一个数据库内所有表的数据保留表结构的相关文章

sql 把一个用逗号分隔的多个数据字符串变成一个表的一列

USE [tms]GO/****** Object: UserDefinedFunction [dbo].[StrToTable] Script Date: 2017/4/26 9:06:20 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER Function [dbo].[StrToTable](@str varchar(1000))Returns @tableName Table( str2table varchar(50))

java安全删除一个文件,防止工具恢复数据

解决移动端文件删除的安全问题:file.delect() Java 确保安全删除某个文件 http://outofmemory.cn/code-snippet/14222/Java-security-delete-file Safe way to delete files in Android development https://stackoverflow.com/questions/53242122/safe-way-to-delete-files-in-android-developme

数据库内置表常见SQL记录

学习数据库内置的一些视图或者表来查询数据库的具体信息. 比如 用户,表空间,表,字段,主外键,索引,数据文件,日志文件,控制文件 耗时SQL 客户端连接 死锁的SQL等 通过这些内置数据了解oracle,进而对其优化. ========================================================== SELECT * FROM user_tables --查询表 --all_tables dba_tables SELECT * FROM user_tab_co

Oracle 12c 新特性之 数据库内归档(In-Database Archiving)

Oracle Database 12c中引入了 In-Database Archiving的新特性, 该特性允许用户通过对表上的数据行标记为inactive不活跃的,以归档数据. 这些inactive的数据行可以通过压缩进一部优化,且对应用来说默认不可见.该特性可以对现有代码做最少改动的情况下,实现了这种"标记删除"的功能和需求. 12c之前:有些应用有"标记删除"的概念,即不是删除数据,而是数据依然保留在表中,只是对应用不可见而已.这种需求通常通过如下方法实现:1

SQL向一个表中批量插入&&删除大量数据

插入: 1. 数据从另一个表中获取 (1)两表结构不一样insert into tb1 需要的列名 select 按照前面写上需要的列名 from tb2(2)两表结构一样insert into tb1 * select * from tb2 2. 数据直接输入 (1) INSERT INTO MyTable(ID,NAME) VALUES(1,'123');INSERT INTO MyTable(ID,NAME) VALUES(2,'456');INSERT INTO MyTable(ID,N

我们在删除SQL Sever某个数据库表中数据的时候,希望ID重新从1开始,而不是紧跟着最后一个ID开始需要的命令

一.如果数据重要,请先备份数据 二.删除表中数据 SQL: Delete From ('表名')  如:Delete From abcd 三.执行新语句 SQL: dbcc checkident('表名',reseed,0) 如:dbcc checkident('abcd',reseed,0) 注: { DBCC CHECKIDENT ('table_name', RESEED, new_reseed_value) 检查指定表的当前标识值,如有必要,还对标识值进行更正. } 这样操作后,新插入的

多表联查时的sql删除语句的写法,即级联删除,将相关联的数据级联删除

mysql多表关联删除 DELETE删除多表数据,怎样才能同时删除多个关联表的数据呢?这里做了深入的解释: 1 delete from t1 where 条件 2 delete t1 from t1 where 条件 3 delete t1 from t1,t2 where 条件 4 delete t1,t2 from t1,t2 where 条件 前 3者是可行的,第4者不可行. 也就是简单用delete语句无法进行多表删除数据操作,不过可以建立级联删除,在两个表之间建立级联删除关系,则可以实

Sql Server 存储过程删除一个表里(除ID外)完全重复的数据记录

1 CREATE PROCEDURE P_DeleteSameData 2 ( 3 @table nvarchar(50),--表名 4 @columns nvarchar(200)--列名,格式形如:Id,Name,Age 5 ) 6 AS 7 BEGIN 8 BEGIN TRY 9 BEGIN TRANSACTION 10 DECLARE @SQL NVARCHAR(1000),@tempTable NVARCHAR(20); 11 SET @SQL = ''; 12 IF OBJECT_I

面试题:求SQL语句:求数据库内各表大小,并排序列出

几天去浦东一家公司去面试,感觉有一道关于数据库查询的题目没答好,自我总结下,下次注意. 题目:求数据库内各表大小,并排列出.写出相应的SQL语句. 代码如下: CREATE PROCEDURE [dbo].[GetTableSpace] @dbName sysname = '', --数据库名,默认当前数据库 @tableName sysname = '', --表名,默认全部表 @columnName varchar(50) = '', --列名,排序用 @sort varchar(4) =