sql - 带有检查约束的自定义函数 SQL Server 2008

标签 sql sql-server-2008

我使用 SQL Server 2008 并且我有两个现有表,venuesevents .

我正在尝试创建一个带有检查约束的自定义函数,以确保 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/

相关文章:

c# - 试图获取文本框的值

sql - SQL Server 2008 中的 ISNULL 函数无法正常工作

sql-server - SQL Server 2008 R2 中的这些字段是什么?

sql-server - Microsoft SQL 代理作业中的 sp_send_dbmail 错误

c# - 将密码散列到 SqlServer

c# - 跳过 SqlBulkCopy 中的某些列

mysql - MYSQL表中的年/月/年、时间列如何转换为年/月/日、时间?

sql - 更新YouTube iframe属性

c# - sql 数据库错误 "Must declare the scalar variable"

mysql - 列中只有 Y 而没有 N 的组 ID