DROP TABLE IF EXISTS Pose ;
导致错误
Error code -1, SQL state 42X01: Syntax error: Encountered "EXISTS" at line 1, column 15.
我使用默认的Derby示例数据库从NetBeans 7.3内部运行它。
答案 0 :(得分:4)
Derby目前不支持IF EXISTS
答案 1 :(得分:1)
用于声明表的MySQL 6.0语法是:
CREATE TABLE [IF NOT EXISTS] tableName ...
用于删除表的MySQL语法是:
DROP TABLE [IF EXISTS] tableName ...
这些子句是MySQL扩展,不属于ANSI / ISO SQL标准。这个功能可能是MySQL特有的:我找不到任何类似的Derby,Postgres,Oracle或DB2文档。
答案 2 :(得分:1)
你想创建一张桌子吗?如果是的话,这就是你应该做的:
databaseMetadata.getTables(...)
请记住对您传递到{{1}}
的表名使用全部大写字母答案 3 :(得分:0)
我能找到的最佳选择是查询系统表以查看表是否存在。
select count(*) from sys.systables where tablename = 'YOUR_TABLE_NAME'"
我有一个丢弃存储过程的类似问题。可以使用此声明查询它们。
select count(*) from sys.sysaliases where alias = 'YOUR_STORED_PROCEDURE_NAME'
答案 4 :(得分:0)
如果有人想要在一个运行Spring测试框架的sql文件中删除并创建一个表,请检查https://stackoverflow.com/a/47459214/3584693以获得一个答案,确保在调用drop表时不会抛出异常不存在。