代码之家  ›  专栏  ›  技术社区  ›  Maxim Gershkovich

TSQL中位值的约束

  •  1
  • Maxim Gershkovich  · 技术社区  · 15 年前

    假设我有一张这样的桌子

    [StockBarcodeID] [uniqueidentifier] NOT NULL,
    [UserID] [uniqueidentifier] NOT NULL,
    [StockID] [uniqueidentifier] NOT NULL,
    [UnitPrice] [money] NOT NULL,
    [Barcode] [varchar](16) NOT NULL,
    [IsDefault] [bit] NOT NULL,
    [LastUpdated] [datetime] NOT NULL,
    

    如何创建一个只允许每个stockid有一个默认条形码行的约束?

    我好像无法理解这件事。这是唯一约束还是检查约束?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Anthony Faull    15 年前

    创建仅显示默认条形码的视图。然后在此视图上创建唯一索引。

    CREATE VIEW dbo.DefaultBarcode
    WITH SCHEMABINDING
    AS
        SELECT StockID, Barcode
        FROM dbo.Barcode
        WHERE IsDefault = 1
    GO
    CREATE UNIQUE CLUSTERED INDEX UC_DefaultBarcode ON dbo.DefaultBarcode (StockID)
    GO