【发布时间】:2011-04-27 09:53:25
【问题描述】:
我想在我的应用程序的配置表中存储一行。我想强制该表只能包含一行。
执行单行约束的最简单方法是什么?
【问题讨论】:
-
为什么不使用列有
(Name, Value)的表,主键是Name。然后您可以select Value from Table where Name = ?确定不会返回任何行或返回一行。 -
我不确定 sql 是这里的最佳解决方案。也许一个简单的 xml 文件更适合配置。我曾经认为配置!= 数据和 sql 是为数据制作的。
-
@ar - 当您希望读取一个整数时,我发现这会出现严重错误,并且您会在 value 列中得到一些格式错误的值。
-
@Damien_The_Unbeliever 为什么会发生这种情况?因为您为
Name指定了一个不存在的值? -
@Noumenon - 请注意我的评论是对
ars 评论的回应。问题是,如果您只是存储名称/值对,则该值必须是字符串,并且您无法在数据库中执行 enforcing 验证。当您为每个设置使用具有单独 列 的单行表时(如 OP 所希望的那样),您可以轻松通过检查约束对每个配置设置强制验证。跨度>
标签: sql-server database-design singleton