如果EXby在德比中未被识别

时间:2013-09-03 13:00:38

标签: netbeans derby

DROP TABLE IF EXISTS Pose ;

导致错误

Error code -1, SQL state 42X01: Syntax error: Encountered "EXISTS" at line 1, column 15. 

我使用默认的Derby示例数据库从NetBeans 7.3内部运行它。

5 个答案:

答案 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表时不会抛出异常不存在。