【问题标题】:Oracle/Php: insert a row and see if it is already in the tableOracle/Php:插入一行,看看是否已经在表中
【发布时间】:2013-01-03 13:55:16
【问题描述】:

我有一个有 4 列的表(id、name、surname、tel)
id 是主键
name、surname 和 tel 是唯一的。

现在我必须插入一行,如果已经有一行具有该 name-surname-tel 的行,则获取 id 并返回它,否则正常插入。

我想到了 2 个策略:
1) 在插入之前做一个选择,如果没有找到插入它,否则取 id
2)尝试插入,如果错误代码1(违反唯一约束)发生,请选择并获取id

哪个更好?还是我可以通过 php 做另一种策略?

【问题讨论】:

    标签: php oracle unique


    【解决方案1】:

    你是对的,这些是最好的选择。就性能而言,如果有的话,差异很小。

    如果你做了第一个,你还必须实施第二个。因为在您的第一个 SELECT 请求和您的第二个 INSERT 语句之间,另一个进程可能已经更改了数据库,除非您在单个事务中这样做。

    您可以将其转换为 SELECT INTO 语句以在单个查询中进行插入/检查,但您仍然需要执行第二次 SELECT 才能获取 ID。

    所以总而言之:我会选择第二个选项,您可以在其中插入并检查错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-24
      • 2014-12-10
      相关资源
      最近更新 更多