关于 CREATE OR REPLACE 和动态更新数据库的问题

Posted

技术标签:

【中文标题】关于 CREATE OR REPLACE 和动态更新数据库的问题【英文标题】:Question on CREATE OR REPLACE and Updating Database Dynamically 【发布时间】:2021-06-21 21:16:01 【问题描述】:

我目前正在使用 XAMPP,MariaDB 版本 10.4.17 来存储使用 php 文件通过 HTTP POST 传输的数据,但我遇到了 CREATE OR REPLACE 函数

的问题
$query0= " DROP DATABASE IF EXISTS Gamma; ";
        $query1= "CREATE DATABASE Gamma";
        $query2=" USE Gamma";
        $query3="**CREATE TABLE OR REPLACE** Gamma.Tesla(id int NOT NULL AUTO_INCREMENT, logtime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, IMFV float NOT NULL, IMMV float NOT NULL, SMFV float NOT NULL, SMMV float NOT NULL, PRIMARY KEY(id))";
        $query4= "**CREATE TABLE OR REPLACE** Gamma.Imagevalues(id int NOT NULL AUTO_INCREMENT, Imageid int NOT NULL, PRIMARY KEY(id))";

如果我删除 Tesla 表,为什么它不会在从 HTTP POST 接收到新数据时自动重新创建表

另外,如果有一些数据丢失,我该如何确保启用自动增量的 ID 列 重置其值,如下例所示:

| id | Values | Log Time     |
| ---| -------| -------------|
| 1  | 20     | April 2 22:15|
| 2  | 100    | April 2 22:20| // DELETE ROW 2
| 3  | 35     | April 2 22:30|
| 4  | 65     | April 2 22:50|

稍后在 4 月 3 日 00:10 收到数据时

| id | Values | Log Time     |
| ---| -------| -------------|
| 1  | 20     | April 2 22:15|
| 2  | 35     | April 2 22:20| // Updated ROW 2 with previous values
| 3  | 65     | April 2 22:30|
| 4  | 99     | April 3 00:10| // New Data POSTED at Apr 3 00:10

【问题讨论】:

【参考方案1】:

CREATE OR REPLACE 不适用于CREATE TABLE statement。

您需要 2 个单独的语句 - 首先您必须删除现有表(如果存在)然后创建一个表:

DROP TABLE IF EXISTS Gamma.Tesla;
CREATE TABLE Gamma.Tesla( .. );

【讨论】:

以上是关于关于 CREATE OR REPLACE 和动态更新数据库的问题的主要内容,如果未能解决你的问题,请参考以下文章

Toad 和 Oracle 中 PROCEDURE 和 CREATE OR REPLACE PROCEDURE 之间的区别

关于 hot code replace fail 问题 .

为啥我们要编写 create/replace 来在 PL/SQL 中创建过程

关于php报错:Deprecated: Function ereg_replace() 的解决方法

CREATE OR REPLACE 语句会影响雪花的时间旅行吗?

[NPM] Create a node script to replace a complex npm script