MySql – 创建表如果不存在它的截断?

这是更新的问题:

当前查询正在执行以下操作:

$sql1 = "TRUNCATE TABLE fubar";
$sql2 = "CREATE TEMPORARY TABLE IF NOT EXISTS fubar SELECT id, name FROM barfu";

运行包含此方法的方法,它会在截断上生成一个错误消息,因为该表还不存在。

我唯一的选择是做CREATE TABLE,运行TRUNCATE TABLE,然后填写表? (3个单独查询)

原来的问题是:

我一直在努力找出在MySql中是否可以执行以下操作,而无需编写块sql:

CREATE TABLE fubar IF NOT EXISTS ELSE TRUNCATE TABLE fubar

如果我在创建表之前单独运行truncate,并且该表不存在,那么我会收到一条错误消息。我正在尝试消除该错误消息,而不必添加任何更多的查询。

该代码将使用PHP执行。

shmuel613,最好更新你的原始问题而不是回复。如果有一个单一的地方包含完整的问题,而不是在一个讨论中展开,那是最好的。

本答案是合理的,除了他似乎有一个“不”他不想要的地方。删除表仅在不存在的情况下才是不正确的。

你确实需要多个语句。有条件地创建然后填充:

> CREATE TEMPORARY TABLE IF NOT EXISTS fubar(id int,name varchar(80))
> TRUNCATE TABLE fubar
> INSERT INTO fubar SELECT * FROM barfu

或者只是放下并重新创建

> DROP TABLE IF EXISTS fubar
> CREATE TEMPORARY TABLE fubar SELECT id,name FROM barfu

使用纯SQL,这是您的两个真正的解决方案。我喜欢第二更好。

(使用存储过程,您可以将其减少为单个语句。类似于:TruncateAndPopulate(fubar)但是当您编写TruncateAndPopulate()的代码时,您将花费更多的时间,而不仅仅是使用上面的SQL。)

http://stackoverflow.com/questions/84330/mysql-create-table-if-not-exists-else-truncate

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:MySql – 创建表如果不存在它的截断?