MySQL和HSQLDB是否都支持SQL语句(或语句的原子序列)以插入值(如果还不存在)?
我正在开发一个使用MySQL作为其生产数据库并使用HSQLDB进行单元测试的应用程序;我想要一个“表为空时的初始数据导入”脚本。
MySQL支持INSERT IGNORE
,REPLACE INTO
并且INSERT INTO ... ON DUPLICATE KEY UPDATE ...
,但是HSQLDB没有; 相反,HSQLDB支持,MERGE
但MySQL不支持。
版本2.3.4的HSQLDb增加了对的支持insert ignore
。
版本2.3.4添加了用于列的UUID类型,用于表和函数的SYNONYM,PERIOD谓词以及在行更新时自动更新的TIMESTAMP列。其他新功能包括从JDBC和管理会话中取消长时间运行的语句的功能,以及对8位文本文件的文本表源的UTF-16文件支持。MySQL对REPLACE,INSERT IGNORE和ON DUPLICATE KEY UPDATE语句的兼容性。
和
http://hsqldb.org/doc/guide/guide.pdf(第260页)。
HyperSQL支持并将INSERT的INSERT IGNORE,REPLACE和ON DUPLICATE KEY UPDATE变体转换为可预测且无错误的操作。当使用INSERT IGNORE时,如果任何插入的行将违反PRIMARY KEY或UNIQUE约束,则不会插入该行。对于多行插入,只有在没有其他冲突(例如长字符串或类型不匹配)时,才插入其余行,否则将返回适当的错误。当使用REPLACE或ON DUPLICATE KEY UPDATE时,需要替换或更新的行将使用给定值进行更新。这与这些行的UPDATE语句完全一样。强制执行引用约束和其他完整性检查,并激活更新触发器。返回的行数只是插入和更新的总行数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句