2013-04-24 75 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') 
相关问题