DELIMITER //
Какая польза от этого?
DELIMITER //
Какая польза от этого?
Он изменяет разделитель операторов от ; до //. Это значит, что вы можете написать ; в определении триггера без неверного истолкования клиента MySQL, что означает, что вы сделали с ним.
Обратите внимание, что при изменении назад DELIMITER ;, а не DELIMITER;, как я видел, люди пытаются это сделать.
В SQL вы закрываете каждый оператор разделителем, который по умолчанию является точкой с запятой (;). В триггере вам нужно написать несколько операторов, каждый из которых заканчивается точкой с запятой. Чтобы сообщить MySQL, что эти точки с запятой не являются концом вашего оператора триггера, вы временно меняете разделитель; на //, поэтому MySQL будет знать, что оператор триггера заканчивается только тогда, когда он запускает/////
Прочитайте (ummmm) документацию mysql.
delimiter - это маркер конца каждой команды, которую вы отправляете клиенту командной строки mysql.
delimiter связан не только с триггерами, но определение триггеров и хранимых процедур является одним из сильных вариантов использования, поскольку вы хотите, чтобы они содержали точки с запятой (;), которые в противном случае являются стандартными delimiter.
Простой устанавливает конец разделителя инструкций (; полуколония в стандартном SQL по умолчанию).
Изменение символа может быть полезно, если вы хотите использовать ; в своем SQL или используете встроенный SQL (где это может привести к путанице). аналогично // в вашем примере может привести к путанице во встроенном SQL, или вы можете использовать его в своем SQL. Поэтому используйте DELIMITER для установки разделителя, подходящего для вашего приложения и потребностей.
Добавьте пример:
При работе с командой оболочки mysql мы использовали разделитель ; для закрытия каждого оператора. Однако в случае, если мы хотим создать процедуры хранения и триггеры, нам также нужно добавить точку с запятой ;.
> delimiter //
> create trigger log_students after insert on students
> for each row
> begin
> insert into log_students(change_by, change_at) values(USER(), NOW());
> end//
> delimiter ;