我有2个表,父表和子表。子表具有父表的外键。我已经成功创建了外键。但是如何在我只插入'id_parent'时自动更新基于父表的字段'nama'? 我只试过了:
kernel void multiply(global int* A,
const int M,
global int* B,
const int N,
global int* C) {
//const int row = get_local_id(0); // Row ID of C (0..M)
const int globalRow = get_global_id(0);
uint globalCol;
int i;
for(i=0;i<M+N+1;i++) {
C[i]=0;
}
for (globalCol=0; globalCol<N; globalCol++) {
int val=A[globalRow]*B[globalCol];
C[globalCol + globalRow +1]+=val/10;
//barrier(CLK_GLOBAL_MEM_FENCE);
C[globalCol + globalRow]+=val%10;
barrier(CLK_GLOBAL_MEM_FENCE);
C[globalCol+1+globalRow]+=val/10;
}
int flag=1;
while (flag) {
flag=0;
for (i=M+N-1 ; i>=0 ; i--) {
if (C[i]>9) {
barrier(CLK_GLOBAL_MEM_FENCE);
C[i+1]+=C[i]/10;
barrier(CLK_GLOBAL_MEM_FENCE);
C[i]=C[i]%10;
//barrier(CLK_GLOBAL_MEM_FENCE);
flag=1;
}
}
}
}
但字段'name'值仍为NULL
这是我的表格:
INSERT INTO child (id_parent) values (1)
父表有这样的数据
CREATE TABLE `child` (
`id` int(6) NOT NULL AUTO_INCREMENT,
`id_parent` int(6) DEFAULT NULL,
`nama` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `aa` (`nama`,`id_parent`),
CONSTRAINT `aa` FOREIGN KEY (`nama`, `id_parent`) REFERENCES `parent` (`nama`, `id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=armscii8;
-- ----------------------------
-- Table structure for parent
-- ----------------------------
CREATE TABLE `parent` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`nama` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `nama` (`nama`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=armscii8;
答案 0 :(得分:1)
检查此行:
KEY `aa` (`nama`,`id_parent`),
CONSTRAINT `aa` FOREIGN KEY (`nama`, `id_parent`) REFERENCES `parent` (`nama`, `id`)
此处您已在两列上创建foreign key
关系,即parent
(nama
,id
)。在这种情况下,您只能在子表中插入已经在父表中的那些组合值。请记住,这里的外键是通过组合两列来实现的,而不是在一列上。
答案 1 :(得分:0)
在我的情况下,我的子表中有一个Location TransId列。我已从父ti子表列更新位置名称。我完成了下面的
UPDATE 表-A 组 Table_A.CityName = Table_B.LocationDesc
来自
<ParentTable> AS Table_A
INNER JOIN <ChildTable> AS Table_B
ON Table_A.CityTransID = Table_B.TransID