【发布时间】:2017-11-19 05:11:54
【问题描述】:
我有 2 张桌子:
- 歌曲 = { isrc、标题、年份、艺术家姓名}
- 艺术家 = { 艺术家姓名、开始日期、成员、流派 }
键:
- 歌曲 – isrc
- Song 中的artistname 是引用 Artist 的外键
- 艺术家 - 艺术家姓名
我需要在 Songs 表中添加一个约束,以便插入的记录年份必须大于或等于艺术家的开始日期(年份)所以我尝试了这个:
alter table Song
add constraint GreaterThanStartDate
check (year > (select startdate from Artist, Song
where Artist.artistname = Song.artistname));
它不起作用,因为检查只接受标量值。所以我认为我应该使用用户定义的函数:
create function CompareStartDate()
returns int
as
begin
declare @result int
if (some condition here)
set @result = 1
else
set @result = 0
return @result
end
我被困在 if 语句中写条件(我可以加入 Artist 和 Song 表,但是如何比较 2 列并返回 1 或 0)。我不确定我是否走在正确的轨道上。
【问题讨论】:
-
用户定义的函数绝对是在正确的轨道上。
标签: sql sql-server check-constraints