我们可以使用MySql在数据库级别上使用触发器吗

时间:2018-08-20 21:30:12

标签: mysql sql-server

我正在学习有关Udemy的Sql课程;讲师正在使用MSSQL,并说我们可以在数据库级别和表级别上都有触发器。 现在,对于数据库杠杆,这是他建议的代码:

ABC-vol003

因此,我将此代码复制并粘贴到MySql中。但是,出现错误! 首先,由于Create trigger demo on database after create_table as begin print "create is not allowed" roll back transaction End Go (在数据库上),我得到语法错误;如果删除它,则会在数据库上获取语法错误。 我用谷歌搜索是否可以在数据库级别上使用触发器,但没有找到任何东西。 现在,我的专家问题是,如果这在MySql中可行,还是仅适用于MSSQL?

谢谢

1 个答案:

答案 0 :(得分:3)

tl; dr;
如果要学习有关SQL Server的课程,则需要进行有关SQL Server的培训。

为什么?

由于SQL确实具有标准(ANSI-SQL),所以每个RDBMS(关系数据库管理系统)都使用不同的SQL方言。
SQL Server使用T-SQL,而MySql使用另一个sql方言(显然也称为MySql)。 (Oracle使用PL / SQL,其他数据库使用其他方言,您可以看到图片)。

这意味着不能保证适用于一个RDBMS的语法适用于另一RDBMS。

“创建触发器”语句在很大程度上是特定于供应商的,这意味着每种SQL方言的语法可能都不同。

通过快速搜索,进一步,MySql has not yet implemented DDL triggers看起来像-在链接中可以看到,状态为“未分配”。

顺便说一句, 并非SQL的所有方言实际上都遵循该标准(实际上,我不确定它们中的任何一个都完全遵循该标准)-因此,即使仅使用ANSI-SQL,也可能无法从不同的数据库供应商处获得相同的结果。