非常想見識一下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= ' '