创建 CHECK 约束 SQL

Create CHECK constraint SQL

希望你能帮帮我。

我想创建一个检查约束以确保列 INKOOPBEDRAG 必须高于 PRIJS_PER_D

在tableINKOOPOVEREENKOMST.[BARCODE]中是对ARTIKEL.[BARCODE]的FK。

我创建了以下 CHECK 约束,但出现错误:

CHECK CK_inkoopbedraghogerdprijs CHECK (INKOOPOVEREENKOMST.[INKOOPBEDRAG] > [artikel][d_prijs])

我使用以下方法解决了这个问题:

GO
CREATE FUNCTION dbo.fnCHK_InkoophogerAlsDPrijs
(@barcode INT, @INKOOPBEDRAG SMALLMONEY)
RETURNS BIT --1 or 0
AS
   BEGIN
   RETURN CASE WHEN EXISTS(
   SELECT *
   FROM Artikel
   WHERE barcode = @barcode
   AND [Prijs_per_d] < @INKOOPBEDRAG)
   THEN 1
   ELSE 0
   END
END;
GO

然后我加了一个Constraint如下:

ALTER TABLE [Inkoopovereenkomst] ADD CONSTRAINT CHK_InkoophogerAlsDPrijs CHECK (dbo.fnCHK_InkoophogerAlsDPrijs(Barcode, Inkoopbedrag) = 1);