2016-09-21 10 views
0

Мне не удалось выяснить, как реализовать нетрадиционные множественности, такие как 1..3 или 5..15 в SQL Server. Я могу реализовать 0..1, 1..1, 0 .. * и 1 .. *. Теперь для принудительного ограничения ограничений объект Trio должен быть связан с хотя бы одним объектом Singer, чтобы добавить запись в таблицу TRIOS, но никакая запись Trio не может быть связана с более чем тремя исполнителями.Как реализовать числовые множественности, такие как 1..3 в SQL Server

Вы можете помочь?
Thanks, Bob

+1

0 .. * множественность не так сложно. Вы можете сделать это, например, для создания функции типа CREATE FUNCTION fn_checkSingerCount (@i INT) RETURNS INT AS BEGIN DECLARE @out INT; SELECT @out = COUNT (*) FROM myTable WHERE singerID = @i; RETURN @out; END ", затем добавив ограничение проверки в таблицу типа' ALTER TABLE myTable ADD CONSTRAINT check_totalSingers CHECK (dbo.fn_checkSingerCount (singerID) <= 3) 'или что-то в этом роде ... Я не уверен, как будет работать 5..15 , хоть. Вам нужно будет вставить как минимум 5 записей или что-то еще? – ZLK

ответ

0

Вы можете использовать ограничение проверки, подобное этому, для управления максимальным количеством записей.

create table trios (trio_id int, person_id int, unique clustered (trio_id, person_id)); 
go 

create function dbo.trio_check (@trio_id int) 
returns int 
as 
begin 
    declare @result int; 
    select @result = count(1) from trios where trio_id = @trio_id; 
    return @result; 
end; 
go 

alter table trios add constraint trio_check1 check (dbo.trio_check(trio_id) <=3); 
go