SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#26 03.02.2012 15:54:27

animegirl
Активист
Зарегистрирован: 28.07.2011
Сообщений: 288

Re: Не знаю как составить триггер

Не примите за наглость, просто не могу собрать эту всю мозаику в голове. Можно пример, вот есть запрос:

INSERT INTO `1` (uid,db_id) VALUES(NULL,1);

Вот сама таблица:
CREATE TABLE IF NOT EXISTS `1` (
  `uid` int(10) unsigned NOT NULL auto_increment,
  `db_id` tinyint(3) unsigned NOT NULL,
  PRIMARY KEY  (`uid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1000000;

Как это всё совместить с выше указанным костылём?

Мне нужно, чтоб если там будет 1999999 и придёт запрос на новое добавление, туда ничего не вписалось, а вернулась ошибка, чтоб можно было послать:
CREATE TABLE IF NOT EXISTS `2` (
  `uid` int(10) unsigned NOT NULL auto_increment,
  `db_id` tinyint(3) unsigned NOT NULL,
  PRIMARY KEY  (`uid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2000000;

И туда по новой запрос на вписывание.


В совершенном идеале, вообще, чтоб в один запрос делалось, но видимо я замечталась sad


Скажи миру - НЯ!

Неактивен

 

#27 03.02.2012 15:58:10

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Не знаю как составить триггер

на таблицу `1` нужно повесить триггер на вставку. В триггере должна быть проверка текущего количества записей - если больше миллиона, то триггер должен выполнить некорректную конструкцию - то, о чем писалось немного выше - например выбрать несуществующее поле из несуществующей таблицы.

В логике работы Вашей программы (или сайта) Вы должны делать проверку того, прошла ли вставка в таблицу `1`. И если вставка не проходит - значит пора создавать новую таблицу и писать данные туда.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#28 03.02.2012 16:02:26

animegirl
Активист
Зарегистрирован: 28.07.2011
Сообщений: 288

Re: Не знаю как составить триггер

Можете написать мне пример такого триггера? roll


Скажи миру - НЯ!

Неактивен

 

#29 03.02.2012 16:17:30

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Не знаю как составить триггер

delimiter //
create trigger bi_1 before insert on `1`
for each row
begin
if ((select count(*) from `1`)>999999) then
insert into you_cannot_insert_into_this_table_because_of_the_trigger_check values ();
end if;
end//

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson