Mysql 如果不存在记录检查
我正在尝试这样做,如果我的数据库没有记录,然后插入它,下面的查询是我的检查,代码没有错误,所以我不确定我是否真的进行了检查 记录1Mysql 如果不存在记录检查,mysql,sql,Mysql,Sql,我正在尝试这样做,如果我的数据库没有记录,然后插入它,下面的查询是我的检查,代码没有错误,所以我不确定我是否真的进行了检查 记录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 = 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')
如果您只想获得某种类型的返回值,请使用函数或存储过程并返回一个值。例如:
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中的查询窗口,请在其上方创建一个变量,或仅打印消息。如果在编码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')
我觉得你的问题很好。你的问题是什么?这是MS SQL Server,而不是标记为MySQL的,不是吗?(如
[]
列附件所示)此检查是否足够好?因为它没有错误返回给我,所以我不确定代码是否正确not@GordonLinoff:“查询对我来说很好”——INSERT
不能用作为前缀,如果不存在
您就不能运行INSERT吗?如果记录存在,并且您正确使用了PK和(可能)UK,那么如果它不存在,它将插入。如果它确实存在,则不会出现,因为您违反了约束。