回答

收藏

检查SQL Server数据库表中是否存在表或列

技术问答 技术问答 235 人阅读 | 0 人回复 | 2023-09-14

在SQL Server数据库中创建列或表之前,我想检查所需的表和/或列是否存在。
7 k: s  W3 {8 v$ {( j& m我到处搜索并找到2种方法。
9 G: k" S4 z$ Q[ol]存储过程,我不想使用
2 h5 k) r3 S( Y, b% q通过使用该SqlCommand.ExecuteScalar()方法并捕获异常来确定表/列是否存在,这对我来说是一个变通方法,但不是一个完美的解决方案。) i2 ?- Y+ R3 ^: l/ i
[/ol]
! N1 L* ?) O% q! M5 z还有另一种方法可以检查SQL Server中是否存在表/列吗?( S1 J1 ~4 a; U4 f  P
               
8 A, Q; e9 i  ?% c8 _: t解决方案:0 C( d7 @0 I7 F6 _% R
                % P8 p2 t1 @3 P. ^

; w- K3 S+ q. R9 V) |2 C+ ^0 X% }
. V, K) ]5 ^# H/ Y                要在创建架构之前检查其是否存在,请执行以下操作:
3 b+ H$ C2 _: w) D  H检查是否存在一列;您可以使用IF NOTEXISTS,然后将实际查询放入其中。
3 @; I* P  r* i2 C1 OIF NOT EXISTS(SELECT * FROM sys.columns
. u4 {! F7 U( Y1 N  d- l        WHERE [name] = N'columnName' AND [object_id] = OBJECT_ID(N'tableName'))
: q! Y/ j* B9 o: JBEGIN7 ~/ t* m$ R" }  r1 s) ~  \6 v$ d. V
    ALTER TABLE ADD COLUMN MYCOLUMN
: f7 U) T2 D, R4 sEND
' m. g" R" k6 Q) Q9 ]5 L8 l+ s3 O对于表,查询有点类似:# Q6 ]) t# d/ A  p+ Z4 U
IF (NOT EXISTS (SELECT *
5 J: B* d0 U1 Q9 j                 FROM INFORMATION_SCHEMA.TABLES # j6 m  k3 h' r3 w$ w% n8 u' l
                 WHERE TABLE_SCHEMA = 'TheSchema' ; r8 N; ~; T  l$ l0 }* I
                 AND  TABLE_NAME = 'TheTable'))5 z' K; I- o  f6 e: U7 [
BEGIN
( F7 W- w0 Z8 [5 ?6 V. y& L    CREATE TABLE MYTABLE
, Y1 o9 C& _, JEND
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则