关于 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 之间的区别
为啥我们要编写 create/replace 来在 PL/SQL 中创建过程
关于php报错:Deprecated: Function ereg_replace() 的解决方法