mysql - 将 PK 合并到表中的 A 列
问题描述
我正在尝试创建一个包含四列的表: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
解决方案
如果您将 MySQL 5.7 与 NDB Cluster 7.5.3 一起使用,那么您应该支持生成的列:
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;
推荐阅读
- git - 在解决方案和源代码控制之间共享项目
- nhibernate - How can I intercept/prevent a property from being modified with (fluent) NHibernate?
- flowlang - 如何让流类型检查器检测我的文件中的更改?
- jsf - 提供基本的http认证
- css - 背景附件固定和容器宽度
- r - R 数据帧 + 逻辑运算
- go - 在 Go 中读取一个不断增长的 mmap 文件
- debugging - 应用程序关闭 - 如何调试原因
- python - Pip 找不到匹配的分布(我的库)
- mysql - 如何重命名外键约束 | MySql 5.6,InnoDB