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

我们可以使用MySql在数据库级别设置触发器吗,mysql,sql-server,Mysql,Sql Server,我正在Udemy上学习Sql课程;讲师正在使用MSSQL,并说我们可以在数据库级别和表级别上使用触发器。 现在,对于数据库杠杆,下面是他建议的代码: Create trigger demo on database after create_table as begin print "create is not allowed" roll back transaction End Go 所以,我在MySql中复制并粘贴了这段代码。但是,有错误! 首先,我得到的语法错误,因为对数据库;若我删除它

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

Create trigger demo on database
after create_table
as 
begin
print "create is not allowed"
roll back transaction
End
Go
所以,我在MySql中复制并粘贴了这段代码。但是,有错误! 首先,我得到的语法错误,因为对数据库;若我删除它,就会在数据库上得到语法错误。 我在谷歌上搜索了一下,看看我们是否可以在数据库级别上使用触发器,但没有找到任何东西。 现在,专家们提出的问题是,这在MySql中是可行的,还是只适用于MSSQL

谢谢,

tl;博士 如果您正在学习SQL Server课程,则需要在SQL Server上进行培训

为什么?

因为虽然SQL有一个标准的ANSI-SQL,但每个RDBMS关系数据库管理系统都使用不同的SQL方言。 SQLServer使用T-SQL,而MySql显然使用另一种SQL方言,也称为MySql。 Oracle使用PL/SQL,其他数据库使用其他方言,您可以理解

这意味着,对于一个RDBMS有效的语法不能保证对另一个RDBMS有效

Create触发器语句是高度特定于供应商的,这意味着对于每种SQL方言,语法可能会有所不同

此外,通过快速搜索,您可以在链接中看到,状态是未分配的

顺便说一句, 并非所有的SQL语言都遵循标准,事实上,我不确定它们中是否有一种完全遵循标准——因此,即使您只使用ANSI-SQL,您也可能无法从不同的数据库供应商那里获得相同的结果;博士 如果您正在学习SQL Server课程,则需要在SQL Server上进行培训

为什么?

因为虽然SQL有一个标准的ANSI-SQL,但每个RDBMS关系数据库管理系统都使用不同的SQL方言。 SQLServer使用T-SQL,而MySql显然使用另一种SQL方言,也称为MySql。 Oracle使用PL/SQL,其他数据库使用其他方言,您可以理解

这意味着,对于一个RDBMS有效的语法不能保证对另一个RDBMS有效

Create触发器语句是高度特定于供应商的,这意味着对于每种SQL方言,语法可能会有所不同

此外,通过快速搜索,您可以在链接中看到,状态是未分配的

顺便说一句,
并非所有的SQL语言都遵循标准,事实上,我不确定它们是否完全遵循标准-因此,即使您只使用ANSI-SQL,也可能无法从不同的数据库供应商处获得相同的结果。

@RaymondNijland在您发布的链接中,有一个例子说明了如何在数据库和服务器级别进行触发器。OEP确实@dfundako ok然后在MSSQL中可以在数据库级别进行触发器。。事实上,MySQL不可能在数据库级别触发。MySQL和SQL Server有两个完全不同的来源、功能,在很大程度上还有命令集。SQL只是一个模糊的语言家族,它们具有共同的特征,并且绝对不兼容。在使用MySQL时,请务必检查MySQL文档,然后再输入随机SQL代码。SQL Server也是如此。谢谢大家,所以代码在MySql中没有任何等价物?除了查看您的SQL代码之外,您最好用privileges@RaymondNijland在你发布的链接中,有一个例子说明了如何在数据库和服务器级别进行触发器。OEP确实@dfundako ok然后在MSSQL中可以在数据库级别进行触发器。。事实上,MySQL不可能在数据库级别触发。MySQL和SQL Server有两个完全不同的来源、功能,在很大程度上还有命令集。SQL只是一个模糊的语言家族,它们具有共同的特征,并且绝对不兼容。在使用MySQL时,请务必检查MySQL文档,然后再输入随机SQL代码。SQL Server也是如此。谢谢大家,所以代码在MySql中没有任何等价物?除了查看您的SQL代码之外,您最好以特权处理此问题