在一条MySQL语句中截断多个表
发布于 2021-05-10 20:31:57
有可能用一个SQL语句,多个表截断吗?
像这样:
truncate table #OBJ_AvailabilityTraining, #OBJ_AvailabilityHoliday, #Dates_temp;
问候
关注者
0
被浏览
265
1 个回答
-
不可以,您只能使用TRUNCATE命令截断单个表。要截断多个表,可以使用T-SQL并遍历表名以一次截断每个表名。
DECLARE @delimiter CHAR(1), @tableList VARCHAR(MAX), @tableName VARCHAR(20), @currLen INT SET @delimiter = ',' SET @tableList = 'table1,table2,table3' WHILE LEN(@tableList) > 0 BEGIN SELECT @currLen = ( CASE charindex( @delimiter, @tableList ) WHEN 0 THEN len( @tableList ) ELSE ( charindex( @delimiter, @tableList ) -1 ) END ) SELECT @tableName = SUBSTRING (@tableList,1,@currLen ) TRUNCATE TABLE @tableName SELECT tableList = ( CASE ( len( @tableList ) - @currLen ) WHEN 0 THEN '' ELSE right( @tableList, len( @tableList ) - @currLen - 1 ) END ) END
您可以在@tableList变量中用逗号分隔所有表名,是的,如果有前缀,则可以截断来自不同模式的多个表。