将pk合并到表中的一列

hgqdbh6s  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(314)

我正在尝试创建一个包含四列的表: ID , animalid , calvdate , AnimalidLactNo ; AnimalidLactNo 在pk之间是concat吗( ID )以及 animalid .
我尝试了以下查询:

CREATE TABLE calvingdatecombined
(
    animalid varchar(80) ,
    calvDate varchar(15) NOT NUll,
    AnimalidLactNo AS CAST(ID AS VARCHAR) + animalid
);

我的预期产出


# ID, animalid, calvDate, AnimalidLactNo

运行insert语句后的示例数据输出应为:

1, TZNDJ02, 2016-06-18, 1-TZNDJ02
goqiplq2

goqiplq21#

如果您使用的是带有ndb cluster 7.5.3的MySQL5.7,那么您应该支持生成的列:

CREATE TABLE calvingdatecombined (
    ID INT NOT NULL AUTO_INCREMENT,
    animalid VARCHAR(80),
    calvDate VARCHAR(15) NOT NULL,
    AnimalidLactNo VARCHAR(100) AS CONCAT(CAST(ID AS CHAR(20)), '-', animalid),
    PRIMARY KEY(ID)
);

你可以做这个专栏 VIRTUAL ,这意味着当您选择 STORED ,在这种情况下,每次插入或更新时都会存储该值。
注意,即使您不想/不能使用生成的列,您仍然可以选择连接的表达式,例如。

SELECT
    ID,
    animalid,
    calvDate,
    CONCAT(CAST(ID AS CHAR(20)), '-', animalid) AS AnimalidLactNo
FROM calvingdatecombined;

相关问题