gpt4 book ai didi

sql - 反向 SQL 查询模式修改

转载 作者:行者123 更新时间:2023-11-29 12:14:34 25 4
gpt4 key购买 nike

我得到了一个以某种方式更改数据库架构的 SQL 查询。我如何生成一个 SQL 查询来反转给定查询的架构更改,以便执行原始查询和反向查询不会对架构产生影响。

例如给定

ALTER TABLE t ADD COLUMN a INTEGER

我来制作

ALTER TABLE t DROP COLUMN a

PS,我知道我可能会丢失一些数据,例如,如果我删除并创建一个列,那里的数据就会丢失。我可以承受这个。

PS2,我假设我可以查看当前模式,找出删除的列/表。

PS3,通用答案很好,但特定于数据库的答案也不错。

最佳答案

在一般情况下,除非执行 CREATE TABLE 语句,否则不能(至少在 PostgreSQL 上)。例如,假设您从这张表开始。

CREATE TABLE wibble (
a INTEGER,
b INTEGER,
c VARCHAR(35),
d DATE
);

schema会这样记录。

CREATE TABLE wibble
(
a integer,
b integer,
c character varying(35),
d date
)

然后删除“a”列,并添加“a”列。

ALTER TABLE wibble DROP COLUMN a;
ALTER TABLE wibble ADD COLUMN a INTEGER;

现在架构将如下所示。

CREATE TABLE wibble
(
b integer,
c character varying(35),
d date,
a integer
)

列“a”第一列;现在是最后一次了。这在关系理论或 SQL 中无关紧要,因为列的顺序无关紧要。不过,它对版本控制系统非常重要。

删除列也可能会删除约束、触发器和索引。

PostgreSQL 还会将您的 SQL DDL 语句重写为规范形式。例如,您可以这样写。

CREATE TABLE wibble (
a INTEGER PRIMARY KEY,
...

但是 PostgreSQL 会存储这样的东西。

CREATE TABLE wibble
(
a integer NOT NULL,
. . .
CONSTRAINT wibble_pkey PRIMARY KEY (a)
)

关于sql - 反向 SQL 查询模式修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7159384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com