将某些行保持为MySQL表中的常量

时间:2018-01-26 05:29:21

标签: mysql

我的情况是我有一张桌子,例如:

| id | type      |
------------------
| 0  | Complete  |
| 1  | Zone      |

现在,我总是希望用这些值填充我的数据库,但是除此之外,用户应该能够自己CRUD自己的自定义类型。例如,用户可能决定他们想要“部分区域”类型:

| id | type         |
---------------------
| 0  | Complete     |
| 1  | Zone         |
| 2  | Partial Zone |

这一切都很好。但我不希望任何人能够删除/修改第一行和第二行。

这看起来应该很简单,但是有一个处理这种情况的通用策略可以确保这些行不受影响吗?我应该在表上放置一个锁定列,并且只在最初在应用程序设置中填充数据库时锁定这两个值吗?我缺少哪些更明显和优雅的东西?

1 个答案:

答案 0 :(得分:2)

除非我遗漏了某些内容,否则您应该只需在表中为该记录的用户ID /所有者添加第三列。对于CompleteZone记录,所有者可以是例如用户0,对应管理员。在删除逻辑中,只需检查ID列,不允许任何人从应用程序中删除管理员记录。

如果这不起作用,您还可以考虑使用两个表,一个用于无法删除的系统记录,另一个用于用户创建的记录。在查询时,您可能必须始终将两个表联合起来。