繁体   English   中英

Oracle / Php:插入一行,看看它是否已经在表中

[英]Oracle/Php: insert a row and see if it is already in the table

我有一个包含4列的表(id,name,surname,tel)
id是主键
姓名,姓氏和电话都是独一无二的。

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

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

哪一个更好? 或者我可以用php做另一种策略?

你是对的,那些是最好的选择。 就性能而言,差异很小。

如果你做第一个,你仍然必须实现第二个。 因为在第一个SELECT请求和第二个INSERT语句之间,另一个进程可能已经更改了数据库,除非您在单个事务中执行此操作。

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

总而言之:我会选择插入并检查错误的第二个选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM