你能限制(数据库)表中的行数吗?

Ej.*_*Ej. 4 sql-server

我们有一个数据库(SQL Server 2005),我们希望在源代码管理下获得它.作为其中的一部分,我们将有一个版本表来存储数据库的当前版本号.有没有办法将该表限制为只保留一行?或者将版本号存储在表中是个坏主意?

结束使用这种方法:

CREATE TABLE [dbo].[DatabaseVersion]
    (
        [MajorVersionNumber] [int]  NOT NULL,
        [MinorVersionNumber] [int]  NOT NULL,
        [RevisionNumber] [int]  NOT NULL
    )
GO

Insert DataBaseVersion (MajorVersionNumber,  MinorVersionNumber,  RevisionNumber) values (0, 0, 0)
GO

CREATE TRIGGER DataBaseVersion_Prevent_Delete
ON DataBaseVersion INSTEAD OF DELETE
AS
BEGIN
    RAISERROR ('DatabaseVersion must always have one Row. (source = INSTEAD OF DELETE)', 16, 1) 
END
GO

CREATE TRIGGER DataBaseVersion_Prevent_Insert
ON DataBaseVersion INSTEAD OF INSERT
AS
BEGIN
    RAISERROR ('DatabaseVersion must always have one Row. (source = INSTEAD OF INSERT)', 16, 1) 
END
GO
Run Code Online (Sandbox Code Playgroud)

Otá*_*cio 7

使用触发器.


WOP*_*OPR 6

对表进行概括以保持"设置"并使其成为键/值对

CREATE TABLE Settings (Key nvarchar(max), Value nvarchar(max))
Run Code Online (Sandbox Code Playgroud)

然后在Key上创建一个唯一索引.

CREATE UNIQUE INDEX SettingsIDX ON Settings (Key)
Run Code Online (Sandbox Code Playgroud)

这将创建一个具有唯一键值对的表,其中一个可以是Version.

INSERT INTO Settings (Key, Value) VALUES ('Version','1');
Run Code Online (Sandbox Code Playgroud)