将PK合并到表中的A列

时间:2018-10-24 06:58:44

标签: mysql

我正在尝试创建一个包含四列的表:IDanimalidcalvdateAnimalidLactNoAnimalidLactNo是PK(ID)和animalid之间的连接。

我尝试了以下查询:

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

我的预期输出

# ID, animalid, calvDate, AnimalidLactNo

运行插入语句后,我的示例数据输出应为:

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

1 个答案:

答案 0 :(得分:3)

如果您将MySQL 5.7和NDB Cluster 7.5.3一起使用,则应该支持generated columns

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;