>我有一个临时表,如果该字段已存在,我需要删除该临时表中的字段。
我正在尝试将查询与非临时表一起使用,这是工作,但不适用于临时表。
create table #mytemp (
fieldA int null,
fieldB int null
)
IF EXISTS ( SELECT 1
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = '#mytemp'
AND COLUMN_NAME = 'fieldA'
AND TABLE_SCHEMA = 'DBO' )
BEGIN ALTER TABLE #mytemp DROP COLUMN fieldA END
你快到了。您需要检查tempdb
而不是连接到的数据库中的对象。此外,临时表具有后缀以确保它们具有唯一的名称,因此您需要一个LIKE
:
CREATE TABLE #mytemp (fieldA int NULL,
fieldB int NULL);
IF EXISTS (SELECT 1
FROM tempdb.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME LIKE N'#mytemp%'
AND COLUMN_NAME = N'fieldA'
AND TABLE_SCHEMA = N'dbo' )
BEGIN
ALTER TABLE #mytemp DROP COLUMN fieldA;
END;