我想知道是否有编写SQL代码的指导方针,这些代码在SQL Server,mySQL以及postgreSQL中兼容。我正在编写一个程序,用户可以选择后端数据库。我很难为每个db创建单独的查询。我不想使用ORM或类似的东西。
感谢您的时间。
答案 0 :(得分:3)
嗯,您可以选择的最佳路径包括采用SQL ISO标准。
Postgres和MySQL是重要的支持者,但我不知道你是否可以对SQL Server说同样的话。无论如何,我认为ORM解决方案对你来说是最好的,因为它们通常很好地抽象出这些差异。
但是如果你不想使用它,你总是可以将查询存储在不同的存储库中,每个存储库用于特定的数据库并在运行时加载它们。
答案 1 :(得分:1)
遵循SQL:2003标准。
将代码从一个系统移植到另一个系统时进行单元测试。
如果没有查看它们在dbms中的实现方式以及它们作为参数接受的内容,请不要使用函数。
要注意的事项:一些SUBSTRING函数在一个系统中基于0,在另一个系统中基于1。 DATEDIFF的工作方式也不同。某些dbms的日期时间数据类型有微秒,有些则没有。
话虽如此,编写真正可移植的SQL是一个梦想......但真正可移植真的很重要吗?熟练的DBA应该知道差异很小并快速移植SQL代码。