基于功能的检查约束

时间:2014-11-02 21:15:23

标签: sql tsql

对于课堂作业,我们有以下场景:

“我们看到我们的一些工作人员保留活动场地无法满足预期参加活动的情况。没有什么比让500人参加最大容量只有200的活动更糟糕了。我们需要添加一个限制条件防止这种情况发生。要测试约束,请添加以下2个事件。“

我们被指示使用函数和检查约束来利用该函数的输出。到目前为止,这是我最好的镜头:

CREATE FUNCTION f_nfp_venues_max_capacity
(
  @event_exp_attendance int,
  @event_venue_id int
)    
RETURNS bit
AS
BEGIN
DECLARE @ResultBit BIT = 1
IF @event_exp_attendance > (SELECT venue_max_capacity FROM nfp_venues WHERE @event_venue_id = venue_id)
  SELECT @ResultBit = 0
RETURN      @ResultBit

END


ALTER TABLE nfp_events
  ADD
    CONSTRAINT ck_event_venue_capacity CHECK
       (([dbo].[f_nfp_venues_max_capacity] (event_exp_attendance)=(1)))

当我尝试执行约束时出现此错误:

Msg 313, Level 16, State 2, Line 1
An insufficient number of arguments were supplied for the procedure or function dbo.f_nfp_venues_max_capacity.

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

在约束中调用函数时,缺少一个必需参数。您还需要在约束中传递event_venue_id

[dbo].[f_nfp_venues_max_capacity] (event_exp_attendance, event_venue_id) 

正如错误消息所示。