我正在学习有关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?
谢谢
答案 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,也可能无法从不同的数据库供应商处获得相同的结果。