2
두 개의 테이블이있는 경우 Doors and House를 말하십시오.범위의 행 수 제한
테이블은 외래 키 (집에 대한 문)를 통해 연결됩니다. 제약은 한 집에 2-10 개의 문이 있다는 것입니다.
데이터 수준에서이를 적용하는 가장 좋은 방법은 무엇입니까?
두 개의 테이블이있는 경우 Doors and House를 말하십시오.범위의 행 수 제한
테이블은 외래 키 (집에 대한 문)를 통해 연결됩니다. 제약은 한 집에 2-10 개의 문이 있다는 것입니다.
데이터 수준에서이를 적용하는 가장 좋은 방법은 무엇입니까?
create table houses (id int primary key)
create table doors (
id int primary key,
house_id int references houses(id)
)
create trigger doorsCondition on doors
instead of insert
AS
declare @max int, @min int
select @max = max(i), @min = min(i) from (
select count(1) i from (
select house_id from doors where house_id = ANY (select house_id from inserted)
union all
select house_id from inserted) subquery
group by house_id) subQuery2
if (@max <= 10 and @min >= 2)
insert into doors select * from inserted
else
print 'The insert violates business constraint'
및 삭제를위한 해당 트리거. 당신은 아마 그것들을 하나에 합칠 수 있지만,이 간단한 시나리오에서는 모든 것을 고려할 가치가 있는지 확신 할 수 없습니다.
저는 대개 트리거가 마음에 들지 않지만 구현할 필요가있는 것처럼 들립니다. 그렇게 말하면 이것은 비즈니스 로직처럼 들리며 그 측면에서 구현 될 수도 있습니다. – sgeddes
어떤 DBMS를 사용하고 있습니까? 포스트그레스? 신탁? –