我运行以下命令:truncate table tableName immediate;
错误是DB2
sqlCODE=-104,sqlSTATE=42601,sqlERRMC=table;truncate ;JOIN,DRIVER=3.50.152
Message: An unexpected token “table” was found following “truncate “. Expected tokens may include: “JOIN “.. sqlCODE=-104,DRIVER=3.50.152
语法与IBM:http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=/com.ibm.db29.doc.sqlref/db2z_sql_truncate.htm的参考文档中指定的语法相匹配
解决方法
几乎遵循标准.(从版本9.7开始)
DB2要求将IMMEDIATE关键字添加到普通的TRUNCATE TABLE语句中,例如:
TRUNCATE TABLE someschema.soMetable IMMEDIATE
TRUNCATE TABLE必须是事务中的第一个语句.以TRUNCATE TABLE开头的事务可能包含其他语句,但如果事务回滚,则TRUNCATE TABLE操作不会撤消.
DB2s TRUNCATE TABLE操作有许多可选参数,有关详细信息,请参阅文档;特别是,REUSE STORAGE参数对ad-hoc DBA任务可能很重要.
在DB2版本中< 9.7,您可以滥用IMPORT声明.不幸的是,您需要知道执行命令的操作系统才能使其正常工作: 在类似unix的系统上:
IMPORT FROM / dev / null DEL DELLACE INTO tablename
在Windows上:
从NUL删除REPTRACE到表名
IMPORT不能在所有情况下被滥用.例如,在使用动态sql时(从Java / .NET / PHP /…-不使用db2命令行处理器),您需要在对ADMIN_CMD的调用中包装IMPORT命令,例如:
CALL ADMIN_CMD('IMPORT FROM /dev/null OF DEL REPLACE INTO tablename')
IMPORT似乎在涉及其他操作的事务中被允许,但它意味着立即执行COMMIT操作.
ALTER TABLE命令也可能被滥用以快速清空表,但它需要更多权限,并且可能会导致前滚恢复出现问题.
这是从网站上获取的:
http://troels.arvin.dk/db/rdbms/#bulk-truncate_table-db2