有没有像便携式SQL这样的东西?
根据我的经验,即使有一个SQL标准,很难编写可以通过大量RDBMS工作的SQL.
因此,我想知道是否有一个已知可用于所有主要RDBMS的SQL(包括DDL,模式等)的子集,包括PostgreSQL,MySQL,SQL Server以及最后但并非最不重要的Oracle.编写可移植SQL时应避免什么样的陷阱? 顺便提一句,是否有一个项目的目标是将有效的SQL子集翻译成所有这些供应商使用的特定方言?我知道Hibernate和其他ORM系统必须这样做,但是我不想要ORM,我想要写直接到数据库的SQL. 谢谢! 解决方法问题是一些DBMS甚至忽略最简单的标准(例如,引用字符或字符串连接).因此,以下(100%ANSI SQL)不会在每个DBMS上运行: UPDATE some_table SET some_column = some_column || '_more_data'; 而且我甚至没有考虑更高级的SQL标准,比如递归的普通表表达式(即使那些支持它的表达式并不总是符合)或者窗口函数(一些仅实现非常窄的子集,有些不支持所有选项). 关于DDL,数据类型有问题. DATE不尽相同,就像TIMESTAMP一样.不是每个DBMS都有一个BOOLEAN类型或TIME类型. 当涉及到约束或域名时,您会得到更多的差异. 所以简而言之:除非你真的,真的需要独立于DBMS,不用担心. 说完所有这些:如果你有专有和标准语法之间的选择,可以选择标准语法(OUTER JOIN vs()或* =,解码vs CASE,nvl对合并等等). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |