我有一个例外,以防止在我的oracle上插入相同的记录.
如果已存在具有特定键值的记录,则必须启用记录插入接口.
我听说COUNT(*)有很多我不想用的费用.
有没有其他方法可以降低成本?
有两种选择
BEGIN
INSERT INTO table (pk_col, col_a, col_b) VALUES (:pk, :col_a, :col_b);
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
UPDATE table SET col_a = :col_a, col_b = :col_b WHERE pk_col = :pk;
END;
Run Code Online (Sandbox Code Playgroud)
要么
BEGIN
UPDATE table SET col_a = :col_a, col_b = :col_b WHERE pk_col = :pk;
IF SQL%ROWCOUNT = 0 THEN
INSERT INTO table (pk_col, col_a, col_b) VALUES (:pk, :col_a, :col_b);
END IF;
END;
Run Code Online (Sandbox Code Playgroud)
我已经展示了一个PL/SQL代码片段,因为你没有指定客户端语言(例如PHP,Python ......).您可以以不同方式处理异常和/或检查SQL%ROWCOUNT.
| 归档时间: |
|
| 查看次数: |
551 次 |
| 最近记录: |