2013-04-24 81 views
0

我想要的東西就像如果我的數據庫沒有記錄,然後插入它,下面的查詢是我的檢查,代碼沒有錯誤,所以我不知道我真的讓我檢查?如果不存在記錄檢查

記錄1個

IF NOT EXISTS (SELECT 1 FROM TBL_AUDIT_LOG_TYPE WHERE AUDIT_LOG_TYPE_ID = 1) 
INSERT INTO TBL_AUDIT_LOG_TYPE ([AUDIT_LOG_TYPE_ID],[MODULE],[ACTION]) 
VALUES (1,'User','UserInfo') 

記錄2

IF NOT EXISTS (SELECT 1 FROM TBL_AUDIT_LOG_TYPE WHERE AUDIT_LOG_TYPE_ID = 2) 
INSERT INTO TBL_AUDIT_LOG_TYPE ([AUDIT_LOG_TYPE_ID],[MODULE],[ACTION]) 
VALUES (2,'User2','UserInfo2') 
+0

您的疑問對我來說很好。你的問題是什麼? – 2013-04-24 02:35:48

+2

這是MS SQL Server,而不是MySQL標記的,不是? (如'[]'列外殼所證明的那樣) – 2013-04-24 02:38:37

+0

這個檢查是否足夠好?因爲它沒有錯誤返回給我,所以我不確定代碼是否正確 – user2306490 2013-04-24 02:38:47

回答

0

如果你想要的是得到一些類型的返回值,使用函數或存儲過程,並返回一個值。例如,

IF EXISTS (SELECT 1 FROM TBL_AUDIT_LOG_TYPE WHERE AUDIT_LOG_TYPE_ID = 1) 
    Return -1 
Else 
    INSERT INTO TBL_AUDIT_LOG_TYPE ([AUDIT_LOG_TYPE_ID],[MODULE],[ACTION]) 
    VALUES (1,'User','UserInfo') 

IF EXISTS (SELECT 1 FROM TBL_AUDIT_LOG_TYPE WHERE AUDIT_LOG_TYPE_ID = 2) 
    Return -2 
Else 
    INSERT INTO TBL_AUDIT_LOG_TYPE ([AUDIT_LOG_TYPE_ID],[MODULE],[ACTION]) 
    VALUES (2,'User2','UserInfo2') 

如果在SSMS中只使用adhoc查詢或查詢窗口,請在上面創建一個變量或僅打印該消息。如果您使用帶有編碼sql查詢的變量,則可以返回返回值。

Declare @ErrorValues int; 
Select @ErrorValues = 0; 

IF EXISTS (SELECT 1 FROM TBL_AUDIT_LOG_TYPE WHERE AUDIT_LOG_TYPE_ID = 1) 
BEGIN 
    Select @ErrorValues = @ErrorValues - 1; 
    PRINT '-1'; 
Else 
    INSERT INTO TBL_AUDIT_LOG_TYPE ([AUDIT_LOG_TYPE_ID],[MODULE],[ACTION]) 
    VALUES (1,'User','UserInfo') 

IF EXISTS (SELECT 1 FROM TBL_AUDIT_LOG_TYPE WHERE AUDIT_LOG_TYPE_ID = 2) 
BEGIN 
    Select @ErrorValues = @ErrorValues - 2; 
    Print '-2'; --or PRINT 'audit_log_type_ID of 2 already exists'; 
END 
Else 
    INSERT INTO TBL_AUDIT_LOG_TYPE ([AUDIT_LOG_TYPE_ID],[MODULE],[ACTION]) 
    VALUES (2,'User2','UserInfo2') 
相關問題