创建MySQL和SQLServer兼容的对象

时间:2010-02-25 17:27:38

标签: mysql database database-design sql-server-2008

我需要支持两个独立的数据库引擎 - MySQL和SQL Server。如果可能的话,我不想维护两组不同的脚本来创建数据库对象(表,视图,存储过程等)。

我想知道是否有人有这样做的经验和学习内容。任何与相关文章/文件相关的链接也不胜感激。

我遇到的一些问题是 1. MySQl具有列的隐式默认值,而SQL Server没有 2. MySQL Timestamp列与SQL Server时间戳列不同 3. MySQL在不同数据库中引用对象的方式与SQL Server的方式不同 - differentdb.table(mysql)vs differentdb.dbo.table(sql server) 4.临时表创建语法在两个数据库引擎中是不同的

此列表并非详尽无遗:)

TIA

1 个答案:

答案 0 :(得分:1)

解决方案是不使用任何SQL脚本来创建数据库对象,而是在应用程序和数据库之间使用某种抽象层:

  • 它应该将一些“规范化”模式作为输入 - 例如,数据库结构的XML描述
  • 输出SQL脚本(每种数据库类型不同),或者直接对数据库执行操作。

有关更多信息,您可能需要查看维基百科条目Database abstraction layer


不确定您使用的语言,但是,例如,在PHP中,ORM Framework Doctrine提供了Abstraction Layer