SQL数据库单例,用于存储db版本信息

时间:2014-02-01 13:00:08

标签: sql sql-server database singleton

我在SQL数据库中需要一个非常简单的东西 - 我使用的是SQL Server和/或SQL Compact。 在c#中,我会像这样写

public class MyApp
{
   public static int Version = 1;
}

e.g。我需要在SQL数据库中以单例形式存储配置信息。 有没有比创建只有一条记录的表更好的方法? 实际上,对于我目前的需求,只有一个版本号与数据库一起存储就足够了,但它必须适用于SQL Server和SQL Compact数据库。

1 个答案:

答案 0 :(得分:0)

一行表可能是您最好的方法。通常,您使用CHECK()约束来保证您只有一行。

create table your_table_name (
  one_row integer not null unique
    default 1 check (one_row = 1),
  version varchar(5) not null unique
);

insert into your_table_name values (1, '0.0.0');

如果您的平台不支持CHECK()约束,但支持GRANT和REVOKE,则可以在版本表中插入一行,然后仅授予 更新权限。 (撤消删除和插入权限。)

如果您的平台不支持CHECK()约束,并且不支持GRANT和REVOKE,但 支持外键引用,您可能可以替换上面的CHECK()约束使用外键引用单行表。这并没有完全解决问题 - 你仍然有一个单行表,你不能充分约束。

如果dbms支持CHECK()约束中的正则表达式,则可以添加其他约束以保证版本号遵循正则表达式。您还可以将“version”拆分为几个整数列,每个整数都有自己的约束。但varchar(5)和varchar(7)似乎是最常见的。