我的情况是我有一张桌子,例如:
| id | type |
------------------
| 0 | Complete |
| 1 | Zone |
现在,我总是希望用这些值填充我的数据库,但是除此之外,用户应该能够自己CRUD自己的自定义类型。例如,用户可能决定他们想要“部分区域”类型:
| id | type |
---------------------
| 0 | Complete |
| 1 | Zone |
| 2 | Partial Zone |
这一切都很好。但我不希望任何人能够删除/修改第一行和第二行。
这看起来应该很简单,但是有一个处理这种情况的通用策略可以确保这些行不受影响吗?我应该在表上放置一个锁定列,并且只在最初在应用程序设置中填充数据库时锁定这两个值吗?我缺少哪些更明显和优雅的东西?
答案 0 :(得分:2)
除非我遗漏了某些内容,否则您应该只需在表中为该记录的用户ID /所有者添加第三列。对于Complete
和Zone
记录,所有者可以是例如用户0,对应管理员。在删除逻辑中,只需检查ID列,不允许任何人从应用程序中删除管理员记录。
如果这不起作用,您还可以考虑使用两个表,一个用于无法删除的系统记录,另一个用于用户创建的记录。在查询时,您可能必须始终将两个表联合起来。