创建 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);
希望你能帮帮我。
我想创建一个检查约束以确保列 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);