Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于存储数据库版本信息的SQL数据库单例_Sql_Sql Server_Database_Singleton - Fatal编程技术网

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

用于存储数据库版本信息的SQL数据库单例,sql,sql-server,database,singleton,Sql,Sql Server,Database,Singleton,我需要一个非常简单的SQL数据库-我使用SQL Server和/或SQL Compact。 我会这样写 public class MyApp { public static int Version = 1; } e、 我需要在SQL数据库中以单例的形式存储配置信息。 有没有比只创建一条记录的表更好的方法? 实际上,对于我目前的需要,数据库中只存储一个版本号就足够了,但它必须同时适用于SQL Server和SQL Compact数据库。一行表可能是最好的方法。通常,您会使用CHECK()约

我需要一个非常简单的SQL数据库-我使用SQL Server和/或SQL Compact。 我会这样写

public class MyApp
{
   public static int Version = 1;
}
e、 我需要在SQL数据库中以单例的形式存储配置信息。 有没有比只创建一条记录的表更好的方法?
实际上,对于我目前的需要,数据库中只存储一个版本号就足够了,但它必须同时适用于SQL Server和SQL Compact数据库。

一行表可能是最好的方法。通常,您会使用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()约束中支持正则表达式,则可以添加其他约束,以确保版本号遵循正则表达式。您还可以将“版本”拆分为几列整数,每列都有自己的约束。但是varchar(5)和varchar(7)似乎是最常见的。

不幸的是,任何版本的SQL Compact都不支持检查约束。@VDohnal:谢谢。我扩展了我的答案来考虑这些限制。