查询其他 shema 系统列 table
Querying other shema syscolumns table
我正在执行 SQL 查询以检查天气模式 abc_hist 有 table @table_name 还是不行。但是即使 table 存在,以下查询也无法 return 任何结果,即每次都使 if 条件为假:
use abc
go
----procedure---
IF EXISTS(select 1
from abc_hist..syscolumns
where status & 128 = 128
and object_name(id) = @table_name )
----procedure---
那么,问题是有没有其他方法可以有效地检查 table 是否存在于其他架构中或更正我当前的 sql?
运行这个:
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
它会在每一行中显示 "not identity",这意味着您作为参数传入的 @table_name
没有标识列,并且因为您将结果设为 where 子句的条件必须是标识列才能返回,没有结果,所以 EXISTS 始终为 false
如果您想使用此查询来检查 table 是否存在,请删除有关状态的 WHERE 子句:
IF EXISTS(select 1
from abc_hist..syscolumns
where object_name(id) = @table_name )
我正在执行 SQL 查询以检查天气模式 abc_hist 有 table @table_name 还是不行。但是即使 table 存在,以下查询也无法 return 任何结果,即每次都使 if 条件为假:
use abc
go
----procedure---
IF EXISTS(select 1
from abc_hist..syscolumns
where status & 128 = 128
and object_name(id) = @table_name )
----procedure---
那么,问题是有没有其他方法可以有效地检查 table 是否存在于其他架构中或更正我当前的 sql?
运行这个:
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
它会在每一行中显示 "not identity",这意味着您作为参数传入的 @table_name
没有标识列,并且因为您将结果设为 where 子句的条件必须是标识列才能返回,没有结果,所以 EXISTS 始终为 false
如果您想使用此查询来检查 table 是否存在,请删除有关状态的 WHERE 子句:
IF EXISTS(select 1
from abc_hist..syscolumns
where object_name(id) = @table_name )