Смысл триггера в том, чтобы он вызывался при определенном условии автоматически. Скопируй код и не парься.
Либо вынеси код в процедуру/функцию. И вызывай ее в триггере и в другой процедуре/функции.
Предлагается использовать битовые поля.
В один INTEGER ты упакуешь 32 BOOL. Это уже даст больше пользы, чем индексация.
INTEGER должен быть быстрее BIGINT. То есть будет несколько полей (4), вместо 100 с лишним. Хранение набора чекбоксов в одном поле БД. Битовая...
Проектирование БД, это по сути построение её ER-модели. "Сложная" -- понятие растяжимое.
Что в него вкладывал тот, кто давал объявление, знает только он.
Ясен пень нужно знать и нюансы самой СУБД и ее диалекта.
Ну это как всегда. Порочный круг:
чтобы получить работу -> нужен опыт работы -> нужно работать, чтобы получить опыт
SELECT id, MAX(date) FROM table GROUP BY id ORDER пишется после, а не перед. Смысл группировки в том, чтобы сгруппировать несколько полей, у которых одинаковые значения. Группируются только те строки, у которых все поля (кроме тех, которые в агрегатных функциях) идентичны.
SELECT pc1.model, pc2.model FROM pc AS pc1
INNER JOIN pc AS pc2 ON (pc1.speed = pc2.speed
AND pc1.ram = pc2.ram
AND pc1.model < pc2.model);
/* Чтобы избавится от повторений (i,j) и (j,i)
нужно было заменить pc1.model <> pc2.model
на pc1.model < pc2.model */
SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME,
REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME LIKE "MY_TABLE";