代码之家  ›  专栏  ›  技术社区  ›  G.Bruce

关系的主键

  •  1
  • G.Bruce  · 技术社区  · 6 年前

    对于表示动物园的数据库,我必须关联两个实体。

    我们有 附件编号(FK来自“附件”表) 换档起动 移位端

    谢谢

    1 回复  |  直到 6 年前
        1
  •  1
  •   S3S    6 年前

    根据您的评论,您可能应该在插入之前进行检查。没有一个真正好的约束可以用来防止重复插入。

    declare @Keeper_Number int = 5
    declare @Enclosure_Number int = 2
    declare @startShift datetime = '20181116 08:00:00'
    declare @endShift datetime = '20181116 08:00:00'
    
    if exists(select 1 from ShiftTable 
              where Keeper_Number = @Keeper_Number 
              and (     shiftStart between @startShift and @endShift
                    or  shiftEnd between @startShift and @endShift)
            )
    begin
        raiserror('Employee is already scheduled in another enclousre during this time',16,1)
        return
    end
    else
    begin
        insert into ShiftTable(Keeper_Number, Enclousre_Number, shiftStart, shiftEnd)
        values(@Keeper_Number, @Enclosure_Number, @startShift, @endShift)
    end