考虑到序列/自动递增的不同实现,如何创建一个可以跨不同rdbms工作的SQL插入语句?

dqh*_*cks 5 mysql sql sql-server oracle postgresql

我正在尝试为类自动创建一个方法,该类将自动将记录插入表中.问题是我需要使代码适用于mysql,mssql,postgresql,oracle和sqlite.

我能想到的唯一解决方案是:

  1. 创建我自己的主键值,但这似乎非常危险,因为可能很难找到生成主键值的故障安全解决方案.

  2. 创建将根据所使用的rdbms驱动程序切换使用的方法的代码,但这看起来很草率,如果可能的话我想使用符合SQL标准的方法.

INSERT如果它们都使用不同的方法来自动递增主键字段,如何创建此语句以便在所有这些rdbms中工作?

小智 5

每个rdbms使用专门的代码.

标准合规性很好,但有太多东西不适用于所有数据库.从简单的事情开始,比如引用字段和值,比如将结果集限制为给定的行数,以及可能还有数百个其他情况.