Подтвердить что ты не робот

Что делает DELIMITER//в триггере?

DELIMITER //

Какая польза от этого?

4b9b3361

Ответ 1

Он изменяет разделитель операторов от ; до //. Это значит, что вы можете написать ; в определении триггера без неверного истолкования клиента MySQL, что означает, что вы сделали с ним.

Обратите внимание, что при изменении назад DELIMITER ;, а не DELIMITER;, как я видел, люди пытаются это сделать.

Ответ 2

В SQL вы закрываете каждый оператор разделителем, который по умолчанию является точкой с запятой (;). В триггере вам нужно написать несколько операторов, каждый из которых заканчивается точкой с запятой. Чтобы сообщить MySQL, что эти точки с запятой не являются концом вашего оператора триггера, вы временно меняете разделитель; на //, поэтому MySQL будет знать, что оператор триггера заканчивается только тогда, когда он запускает/////

Ответ 3

Прочитайте (ummmm) документацию mysql.

delimiter - это маркер конца каждой команды, которую вы отправляете клиенту командной строки mysql.

delimiter связан не только с триггерами, но определение триггеров и хранимых процедур является одним из сильных вариантов использования, поскольку вы хотите, чтобы они содержали точки с запятой (;), которые в противном случае являются стандартными delimiter.

Ответ 4

Простой устанавливает конец разделителя инструкций (; полуколония в стандартном SQL по умолчанию). Изменение символа может быть полезно, если вы хотите использовать ; в своем SQL или используете встроенный SQL (где это может привести к путанице). аналогично // в вашем примере может привести к путанице во встроенном SQL, или вы можете использовать его в своем SQL. Поэтому используйте DELIMITER для установки разделителя, подходящего для вашего приложения и потребностей.

Ответ 5

Добавьте пример:
При работе с командой оболочки 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 ;