将表限制为只有一行

fin*_*nnw 6 sql sql-server

限制SQL表以允许它只有一行的最简洁方法是什么?

此相关问题讨论了为什么存在这样的表,而不是如何实现约束.

到目前为止,我只发现涉及一个唯一键列的黑客,这些键被限制为具有特定值,例如ALWAYS_0 TINYINT NOT NULL PRIMARY KEY DEFAULT (0) CONSTRAINT CHECK_ALWAYS_0 CHECK (ALWAYS_0 = 0).我猜可能有一种更清洁的方法.

理想的解决方案是可移植SQL,但特定于MS SQL Server或postgres的解决方案也很有用

SQB*_*SQB 3

我刚刚在 SQL Server 2008 上解决了同样的问题,方法是创建一个包含计算列的表并将主键放在该列上:

CREATE TABLE MyOneRowTable (
    [id] AS (1) PERSISTED NOT NULL CONSTRAINT pk_MyOneRowTable PRIMARY KEY,
    -- rest of the columns go here
);
Run Code Online (Sandbox Code Playgroud)