非常想見識一下sql高手的厲害
declare @vExecStr nvarchar(4000)
set @vExecStr= ' '
select @vExecStr=@vExecStr+ 'delete from '+name+char(13) from sysobjects where type= 'u '
print @vExecStr
請問以上語句代表什么意思?
[解决办法]
清空当前数据库中所有用户表中的数据。
[解决办法]
libin_ftsafe(子陌红尘:当libin告别ftsafe) ( ) 信誉:105 Blog 2007-03-20 11:55:13 得分: 0
清空当前数据库中所有用户表中的数据。
[解决办法]
declare @vExecStr nvarchar(4000)
set @vExecStr= ' '
select @vExecStr=@vExecStr+ 'delete from '+name+char(13) from sysobjects where type= 'u ' --用于生成一系列的delete from tname(实际表名来源于sysobjects系统表)的语句
print @vExecStr
[解决办法]
想删所有用户表~~.....
[解决办法]
有关系的表是搞不掉的....
[解决办法]
--定义字符串
declare @vExecStr nvarchar(4000)
--给字符串赋值
set @vExecStr= ' '
--查询(讲sql语句封装成字符串)
select @vExecStr=@vExecStr+ 'delete from '+name+char(13) from sysobjects where type= 'u '
--输出
print @vExecStr
这种方法便于维护,在多处引用的时候直接修改字符串就行了
^_^
[解决办法]
删除所有用户表的数据
[解决办法]
迭代
[解决办法]
用迭代的方式生成一个大小为4000的字符串,其中内容为删除当前数据库所有的用户表的数据的SQL语句。
如果表太多的话,可能由于字符串不够大而不能涵盖所有的用户表。
[解决办法]
我认为是删除用户数据表里的数据,但如果有外键约束就不能删除数据
个人想法!!!!
[解决办法]
呵呵,实用吗
[解决办法]
bu
[解决办法]
先禁用当前数据库中所有的外键约束,然后再执行你的SQL,就可以清空当前数据库中所有用户表中的数据。
[解决办法]
禁用当前数据库的所有外键约束,再执行你的SQL,就可以清空当前数据库中所有用户表中的数据。
[解决办法]
DECLARE @CUR CURSOR
DECLARE @表名 VARCHAR(100)
DECLARE @字段名 VARCHAR(100)
DECLARE @约束名 VARCHAR(100)
DECLARE @SQL VARCHAR(8000)
--禁用所有外键约束
SET @CUR = CURSOR READ_ONLY
FOR
SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE CONSTRAINT_NAME IN (SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS)
ORDER BY TABLE_NAME, COLUMN_NAME
OPEN @CUR
FETCH NEXT FROM @CUR INTO @表名, @字段名, @约束名
WHILE (@@FETCH_STATUS = 0)
BEGIN
--禁用约束
SET @SQL = 'ALTER TABLE ' + @表名 + ' NOCHECK CONSTRAINT ' + @约束名
EXEC (@SQL)
FETCH NEXT FROM @CUR INTO @表名,@字段名,@约束名
END
CLOSE @CUR
DEALLOCATE @CUR
[解决办法]
加個條件
declare @vExecStr nvarchar(4000)
set @vExecStr= ' '
select @vExecStr=@vExecStr+ 'delete from '+name+char(13) from sysobjects where type= 'u ' And Status > 0
print @vExecStr
[解决办法]
--删除数据库中的所有外键约束
declare @s varchar(8000)
declare tb cursor local for
select s= 'alter table [ '+object_name(parent_obj)+ '] drop constraint [ '+name+ '] '
from sysobjects where xtype= 'F '
open tb
fetch next from tb into @s
while @@fetch_status=0
begin
exec(@s)
fetch next from tb into @s
end
close tb
deallocate tb
--删除数据库的所有表
declare @vExecStr nvarchar(4000)
set @vExecStr= ' '
select @vExecStr=@vExecStr+ 'delete from '+name+char(13) from sysobjects where type= 'u '
print @vExecStr
[解决办法]
char(13)就是換行
name是sysobjects這個表的字段
Select * from sysobjects where type= 'u ' And Status > 0
你就可以得到數據庫中所有用戶資料表的信息
[解决办法]
char(13)占几个字符?
dtproperties这个垃圾为什么删除了又会自动创建?
是不是建立了外键dtproperties这垃圾就会出现,可是没有他也没什么问题啊?
[解决办法]
先从sysobjects系统表中提取name字段,char(13)是换行府
然后把 'delete from ' + name + char(13)的值进行迭代,赋值给@vExecStr
[解决办法]
你这样删除资料,干嘛不用truncate table,除非你想撤消