2017-02-21 16 views
1

Возможно ли реализовать соотношение 1: N, которое содержит 10 строк many, ссылающихся на 1 строку из таблицы one?MySQL 1:10 фиксированные отношения. Как реализовать его на уровне базы данных?

// ID int 
INSERT INTO one VALUES (1); 
// ... 
INSERT INTO one VALUES (25); 

//ID int, one_id int 
INSERT INTO many VALUES (1,1); 
// ... 
INSERT INTO many VALUES (1,10); 
INSERT INTO many VALUES (1,11); // ERROR! 

INSERT INTO many VALUES (2,11); // working 
// ... 
INSERT INTO many VALUES (2,20); // working 
INSERT INTO many VALUES (2,21); // ERROR! 
+0

с хранимой процедуры (или как их называют в Msql): да. В родном sql: нет. – RickyA

ответ

1

Вы можете сделать это с помощью триггера:

create trigger trg_mytable_max10 before insert on mytable 
for each row 
begin 
    declare cnt int; 
    set cnt = (select count(*) from mytable where col1 = new.col1); 
    if cnt = 10 then 
    signal sqlstate '45000' set message_text = 'only 10 records per col1 allowed'; 
    end if; 
end; 

http://rextester.com/EORH56497

+0

Я намерен использовать что-то при создании уровня таблицы, но если это единственный способ, я буду принимать этот ответ, поскольку он работает. –

+0

Я думаю, что это единственный способ. Нет ограничений, которые вы могли бы применить к таблице. –

+0

Тогда это принято для меня. Спасибо за помощь! –