为什么 ALTER TABLE添加列在此 SQL 代码中不起作用?

问题描述

假设我有一张像这样的表(名为 numbers

A B
1 3
4 4
5 5

我想创建一个新列 C,其中包含值 A / B。 IE。看起来像:

A B C
1 3 0.33
4 4 1
5 5 1

我尝试了这段代码,但它不起作用。有谁知道为什么?

ALTER TABLE numbers ADD C VARCHAR(50) NOT NULL INSERT INTO numbers (C) VALUES (A / B)

解决方法

听起来您想要一个生成的列。语法因数据库而异,但通常是这样的:

ALTER TABLE numbers ADD C VARCHAR(50) GENERATED ALWAYS AS (A / B);

为什么要进行算术运算然后将值存储为字符串对我来说是个谜,但这是允许的。

Here 是一个 dbfiddle,正好使用 MySQL。