我正在努力尝试如果我的数据库没有记录,然后插入它,下面的查询是我的检查,代码没有错误,所以我不确定我是否真的进行检查?
记录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 :(得分: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')