2013-11-20 4 views
0

Итак, я создаю базу данных для веб-сайта. Внутри этой базы данных есть таблица с названием «featured». Я должен убедиться, что в этой таблице не более 25 элементов в любой момент времени. Для того, чтобы достичь этой цели, я создал триггер:Database Trigger - Максимальное количество элементов в таблице

DELIMITER $$ 

CREATE TRIGGER featured_check AFTER INSERT ON featured 
    FOR EACH ROW 
     BEGIN 
      IF (SELECT COUNT(*) FROM featured) > 25 THEN 
       DELETE FROM featured ORDER BY featured_id LIMIT 1; 
      END IF; 
     END$$ 

DELIMITER ; 

Этот триггер должен быть активирован каждый раз, когда элемент вставляется в таблицу признаков. Он будет подсчитывать количество элементов в таблице, и если счетчик превышает 25, он удалит элемент с наименьшим идентификатором. «featured_id» в этом случае является автоматически увеличивающим первичный ключ.

Учитывая всю эту информацию, у меня есть два вопроса:

  1. ли делать это триггер, что я думаю, что он делает? Я не эксперт по базам данных, и я просто хотел убедиться.
  2. Это лучший способ решить эту проблему? Есть ли лучший способ предотвратить наличие у таблицы более 25 предметов?
+0

1. Я бы создал таблицу с 25 строками и триггером и просто проверить для себя. – Kleskowy

+0

Я не знал, что вы можете создать таблицу с заданным количеством строк. – Flyingcows00

ответ

0

можно упростить триггер кода SQL, удалив если и использовать

DELETE FROM featured 
WHERE featured_id IN 
     (SELECT MIN(featured_id) 
     FROM featured 
     HAVING COUNT(*)>24) 

, но в остальном выглядит нормально для меня.

Смежные вопросы