直接上代碼吧,主要包含兩個重要的對象或方法,一個是SYS.TABLES,一個是OBJECTPROPERTY。具體用法不作展開。sql
/* ** 檢查數據庫中表是否有標識列 ** 以打印的方式輸出 **/ ALTER PROCEDURE [dbo].[YJ_CHECK_TABLE_PK] AS BEGIN --存儲表名 DECLARE @TABLE_NAME VARCHAR(100) = ''; --表是否有標識列,1有0無 DECLARE @PK_TAG NUMERIC = -99; --獲取全部表名的遊標 DECLARE CUR_CHECK CURSOR FOR SELECT NAME FROM SYS.TABLES; OPEN CUR_CHECK ; FETCH NEXT FROM CUR_CHECK INTO @TABLE_NAME; WHILE @@fetch_status<>-1 BEGIN SELECT @PK_TAG = OBJECTPROPERTY(OBJECT_ID(@TABLE_NAME),'TableHasIdentity'); IF(@PK_TAG=0) BEGIN PRINT UPPER(@TABLE_NAME) + ' 沒有標識列' END /* ELSE IF(@PK_TAG=1) BEGIN PRINT @TABLE_NAME + ' 有標識列' END ELSE BEGIN PRINT 'ERROR OCCURED' END */ FETCH NEXT FROM CUR_CHECK INTO @TABLE_NAME; END END
運行結果截圖:數據庫