哪个是处理FOREIGN KEY
数据库错误的最佳方法INSERT
?
PHP之前
INSERT
:加载SELECT
检查外键匹配的附加查询()?让 MySQL 引发错误,而 PDO 抛出异常?
存在更多选择吗?
与速度/优雅/可重用代码/等进行比较。
哪个是处理FOREIGN KEY
数据库错误的最佳方法INSERT
?
PHP之前INSERT
:加载SELECT
检查外键匹配的附加查询()?
让 MySQL 引发错误,而 PDO 抛出异常?
存在更多选择吗?
与速度/优雅/可重用代码/等进行比较。
在您接触数据库之前检查您意识到可能存在的错误总是有意义的,所以我会说选项 1 是最好的选择。它还为您提供更用户友好的错误报告。
有时 1) 不是一种选择。想象一下,您有参加会议的人员。如果您有一个 PeopleMeetings 表(M 到 N 关联),您不能执行 SELECT 然后执行 INSERT... b/c 您可以执行 SELECT 并发现 Person 和 Meeting 都存在,然后另一个进程可以删除会议,然后您将执行插入,这将失败 b/c 会议不再存在。
这就是为什么我总是做 2)... 显然,如果会议不存在,我会在加载页面之前做一个 SELECT,向用户显示系统上当前的会议,但是做 2) 是必须的。
更不用说你不需要再做 2 个额外的查询(在我的例子中)一个到 People,另一个到 Meeting……你仍然可以优雅地处理错误,向用户提供出错的信息(当你如果你做了 2 SELECT 查询会做)
此外,您应该使用事务...这样,如果您正在对数据库进行更改并且此 INSERT 失败,则事务将回滚并且数据库不会处于不一致状态
如果您不想“用户友好”并显示有用的错误消息,我会说 1。
当然,答案将取决于您的上下文...