所以我需要将 MySQL 数据库转换为 SQL Server 2008 R2 数据库。为此,我使用了 Microsoft 的新 SSMA MySQL 工具。除了触发器外,一切都转换得很好,转换时一直崩溃。
第一个 MySQL 触发器:
CREATE
DEFINER=`root`@`localhost`
TRIGGER `dbo`.`table_A_trig`
BEFORE INSERT ON `dbo`.`table_A`
FOR EACH ROW
BEGIN
/* Logic here */
END
第二个 MySQL 触发器:
CREATE
DEFINER=`root`@`localhost`
TRIGGER `dbo`.`table_A_trig_Update`
AFTER UPDATE ON `dbo`.`table_A`
FOR EACH ROW
BEGIN
/* Logic Here */
END
我应该如何重写它们才能在 SQL Server 2008 中创建它们?
谢谢大家!
最佳答案
需要指出的几个不同点。
SQL Server 没有“之前”触发器,因此您必须将第一个触发器转换为 INSTEAD OF 触发器并手动执行插入操作。
SQL Server 触发器使用特殊的 INSERTED(相当于 MySQL 中的 NEW)和 DELETED(相当于 MySQL 中的 OLD)表。
所以你的 CREATE TRIGGER syntax看起来像:
CREATE TRIGGER dbo.table_A_trig
ON dbo.table_A INSTEAD OF INSERT
AS
BEGIN
/* logic here */
/* Manually perform the insert operation */
INSERT INTO dbo.table_A
(column_list)
SELECT column_list
FROM INSERTED
END
CREATE TRIGGER dbo.table_A_trig_Update
ON dbo.table_A FOR UPDATE
AS
BEGIN
/* logic here */
END
关于mysql - 将 MySql 触发器转换为 SQL Server 2008 R2 触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4795818/