运行这个:
select CASE WHEN status & 8> 0 THEN 'allows null' ELSE 'no nulls' end, CASE WHEN status & 16 > 0 THEN 'check constraint exists' ELSE 'no checks' end, CASE WHEN status & 128 > 0 THEN 'is identity' ELSE 'not identity' end, * from abc_hist..syscolumns where object_name(id) = @table_name
它会在每一行中说“不是身份”,这意味着 @table_name 你传入的参数没有标识列,并且因为你使where子句的条件是结果必须是一个标识列才能返回,所以没有结果,所以EXISTS总是为false
@table_name
如果要使用此查询检查表的存在,请删除状态上的WHERE子句:
IF EXISTS(select 1 from abc_hist..syscolumns where object_name(id) = @table_name )