0

例如,用户创建一个产品,并将其分配到一个类别中。

在类别中,我们有一些记录:

-phone, id:0
-computer, id:1
-pad, id:2

并且用户创建产品,产品需要分配类别,用户执行以下操作:

name:iphone
cat:0

流程将像这样工作:

1.  check the cat is exist in db or not
2a. if not exist prompt error 
2b. if exist, put the record in db. 

但是在完成第 1 步检查之后,以及在 2b 开始之前,是否有任何机会。管理员删除电话类别。如果发生这种情况,数据库将插入一条没有 cat id watch 的记录。数据库将具有以下内容:

*-phone, id:0* (not any more, because the admin delete it)
-computer, id:1
-pad, id:2

但是有这样的记录:

name:iphone //but it belong to no category, because the admin delete it. 
cat:0

如果有机会这样做,我该如何避免这种情况?谢谢你。

(使用 php 和 mysql 与 codeigniter)

4

2 回答 2

1

您应该考虑两件事:

  1. 事务-它们使所有更改都成为原子的,即在您提交之前,其他用户看不到您的所有更改,因此每个人都看到数据库处于一致状态。
  2. 修改您的数据库模式以使用外键- 它们确保保留数据关系,因此如果您设置它以便类别必须始终存在并且它突然消失,那么您的插入将失败。
于 2011-08-27T13:44:03.930 回答
0

将它放在 try..catch 块中并使 MySQL 中的一些记录值不为空(必需的字段),您将能够捕获异常并从中显示错误。

于 2011-08-27T13:41:34.367 回答