我正在尝试创建一个包含四列的表:ID
,animalid
,calvdate
,AnimalidLactNo
; AnimalidLactNo
是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
答案 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;