我有一个名为benificiaries的表,其中包含以下列
custid varchar
accno varchar primarykey
name varchar
我在该表中有一条值为
的记录101
12345
john
现在我需要为另一个custid但同样的accno
插入一条记录 var data={"custid":"102","accno":"12345","name":"john"};
con.query('insert into benificiaries set ?',data)
但它不允许,因为accno是主键。所以我怎么能插入这个?我可以为不同的custid设置相同的帐号。任何想法?
答案 0 :(得分:1)
在此处查看您的MySQL代码:
CREATE TABLE beneficiaries (
custid INT PRIMARY KEY,
accno INT,
name varchar(30)
);
将custid设置为主键,并观察我为每列使用的数据类型。
答案 1 :(得分:0)
这是不可能的,你将accno和custid作为复合键
答案 2 :(得分:0)
你根本无法做到这一点,因为你已经将accno定义为主键。 主键就是 - 记录的主键。它是一个唯一的值,可以正确地识别该记录并且仅记录该记录。如果您无法保证每条记录的数据都是唯一的,那么它就不是您的主键。
对我来说,这个表看起来像一张映射表。是吗? 如果是这样,它实际上不需要主键。如果您绝对必须给它一个主键,出于某种原因,那么只需使用自动增量整数列为该表提供一个代理键,并将其作为该表的主键。
这张桌子是如何使用的? 我会说一个主键,只是在accno和custid列上的索引(如果你按每个列进行查找)。
如果accno和custid的组合是唯一的(考虑到这个表似乎是什么),那么你可以将主键定义为accno和custid的组合。
如果出于某种原因,您需要能够为这两个字段设置多个具有相同值的记录,那么无论如何您在此表中都没有自然键。
答案 3 :(得分:0)
因为可以有多个具有相同accno的条目,所以accno不是主键。从accno和custid创建一个复合主键,你应该设置。
#include <stdio.h>
int main(void) {
char c[15];
printf("enter a string\n");
scanf("%14s", c); // change %c to %s
printf("%s\n", c);
return 0;
}