sql - 是否可以在设计阶段限制sql表只有一行

标签 sql sql-server sql-server-2014

我有一个简单的表格,如下所示。

    CREATE TABLE dbo.KeyNumbers (
  RowId INT IDENTITY
 ,ProFormaNumber NCHAR(10) NULL
 ,SalesOrderNumber NCHAR(10) NULL
 ,PurchaseOrderNumber NCHAR(10) NULL
 ,InvoiceCreditNoteNumber NCHAR(10) NULL
 ,InvoiceNumber NCHAR(10) NULL
 ,PurchaseInvoiceCreditNoteNumber NCHAR(10) NULL
 ,ModifiedDate DATETIME NULL
 ,CONSTRAINT PK_KeyNumbers PRIMARY KEY CLUSTERED (RowId)
) ON [PRIMARY]

该表用于存储公司的关键文档编号(发票编号、销售订单编号等),因此只需要一行。与该表的主要交互是通过存储过程完成的,因此最终用户永远不需要访问它,但我想知道 SQL Server 中是否有一种方法可以主动限制该表只有一行,并且能够在设计阶段做到这一点。

编辑

证明戈登的建议很有效

enter image description here

最佳答案

显而易见的方法是在插入时使用触发器来确保表为空。

我从未尝试过此操作,但计算列上的索引也可能有效:

alter table dbo.KeyNumbers add OneAndOnly as ('OneAndOnly');

alter table dbo.KeyNumbers add constraint unq_OneAndOnly unique (OneAndOnly);

如果插入第二行,这应该会生成唯一键冲突。

关于sql - 是否可以在设计阶段限制sql表只有一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36104876/

相关文章:

sql-server - Windows Azure 上的 WCF 服务 - 连接到本地 SQL Server 数据库

sql - 尝试在没有动态 SQL (sql server) 的情况下完成

javascript - 将 Nodejs 和 Angular 2 连接到 SQL Server 2014

SQL:展开集合

mysql - SQL错误: 1364 Field 'XXXX' doesn't have a default value1

php - 如何在一个 PHP 查询中使用 2 个 MySQL SELECT 语句

mysql - 强制扫描子查询结果而不是现有结果

sql - MS SQL-用户定义函数-斜率截取RSquare;如何按投资组合分组

sql-server - SQL Server - 评估期已过期错误

sql-server - 在用户定义的函数中检索随机行?