我试图在SQL中编写一个触发器,并且在尝试更新或插入之前,需要确定表中是否存在条目。Oracle SQL触发器中主键存在测试
我一直在使用这两种
IF EXISTS
UPDATE
ELSE
INSERT
而且
UPDATE
IF @@ROWCOUNT = 0
INSERT
尝试,但都没有工作。我偏爱使用后者,因为我的雇主迷,效率(嗯...咄...)因为这个原因,我也不愿意使用
IF SELECT COUNT(*) = 0
UPDATE
ELSE
INSERT
是否有人知道任何方法来解决这个?
-
UPDATE:我想用MERGE,但我收到几个错误...
MERGE INTO [tableName] AS Target
USING (SELECT :NEW.PIDM) AS Source (PIDM)
ON (Target.PIDM = Source.PIDM)
WHEN MATCHED THEN
[UPDATE STATEMENT]
WHEN NOT MATCHED THEN
[INSERT STATEMENT]
这给了我一个错误抱怨说我失踪的using关键字,以及另一个抱怨WHEN语句...
可能你的应用程序有多个用户同时连接?如果是这样,这些方法都不会起作用。您需要某种方式来序列化对更新的访问(例如,唯一约束或数据库锁定)。 – 2012-09-24 03:53:47