Можем ли мы иметь триггеры на уровне базы данных, используя MySql

0

Я изучаю курс Sql на Удмени; инструктор использует MSSQL и говорит, что у нас могут быть триггеры на уровне базы данных, а также на уровне таблицы. Теперь для рычага базы данных здесь приведен код, который он предложил:

Create trigger demo on database
after create_table
as 
begin
print "create is not allowed"
roll back transaction
End
Go

Итак, я копирую и вставляю этот код в MySql. Но есть ошибки! Прежде всего, я получаю синтаксическую ошибку из-за on (on database); если я удалю его, получите синтаксическую ошибку в базе данных. Я googled, чтобы увидеть, можем ли мы иметь триггеры на уровне базы данных или нет, ничего не нашел. Теперь мой вопрос от экспертов заключается в том, что если это выполнимо в MySql, или это что-то для MSSQL?

Спасибо,

  • 0
    @RaymondNijland В размещенной вами ссылке есть пример того, как выполнить триггер на уровне базы данных и сервера.
  • 0
    Да, действительно @dfundako ок, тогда в MSSQL возможны триггеры на уровне базы данных. Я знаю, что на MySQL триггеры на уровне базы данных невозможны.
Показать ещё 5 комментариев
Теги:
sql-server

1 ответ

3

ТЛ; др;
Если вы изучаете курс на SQL Server, вам необходимо пройти обучение на SQL Server.

Зачем?

Поскольку в то время как SQL имеет стандартный (ANSI-SQL), каждая RDBMS (система управления реляционными базами данных) использует другой диалект SQL.
SQL Server использует T-SQL, в то время как MySql использует другой sql-диалект (по-видимому, также называемый MySql). (Oracle использует PL/SQL, другие базы данных используют другие диалекты, вы получаете изображение).

Это означает, что синтаксис, который работает для одной СУБД, не гарантированно работает на другой СУБД.

Операторы Create Trigger отличаются высокой спецификой для вендора, что означает, что для каждого диалекта SQL синтаксис, вероятно, будет отличаться.

Более того, из быстрого поиска, похоже, что MySql еще не реализовал триггеры DDL. Как видите в ссылке, статус Un-Assigned.

Кстати, не все диалекты SQL фактически следуют стандарту (на самом деле, я не уверен, что любой из них полностью соответствует стандарту) - поэтому, даже если вы используете ANSI-SQL, вы можете не получать одинаковые результаты из разных баз данных поставщики.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню