我使用 SQL Server 2008 并且我有两个现有表,venues
和 events
.
我正在尝试创建一个带有检查约束的自定义函数,以确保 event_expected_attendance
中的整数events
中的栏目表总是小于或等于 venue_max_capacity
venues
中的整数 table 。
由于检查约束位于两个表之间,因此我正在努力处理自定义函数的语法以及 join 语句。
谢谢您的帮助!我会尽快回答任何其他问题。
最佳答案
正如 Martin Smith 所说,使用带有 UDF 的检查约束存在一些问题,并且可能会对性能产生负面影响,但是如果您无论如何都想尝试,此代码应该可以工作:
CREATE FUNCTION dbo.CheckVenueCapacity (@venue_id int, @capacity int)
RETURNS int
AS
BEGIN
DECLARE @retval int
SELECT @retval = CASE WHEN venue_max_capacity >= @capacity THEN 0 ELSE 1 END
FROM venues
WHERE venue_id = @venue_id
RETURN @retval
END;
GO
ALTER TABLE events
ADD CONSTRAINT chkVenueCapacity
CHECK (dbo.CheckVenueCapacity(event_venue_id, event_expected_attendance) = 0);
关于sql - 带有检查约束的自定义函数 SQL Server 2008,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26693571/