参照表外键怎么自动查找到被参照表主键值?

数据库生成主键值,参照表外键怎么自动查找到被参照表主键值?CREATE TABLE t_group (        groupid INT NOT NULL,        groupname VARCHAR(30),        PRIMARY KEY (grou...显示全部
数据库生成主键值,参照表外键怎么自动查找到被参照表主键值?


CREATE TABLE t_group (
        groupid INT NOT NULL,
        groupname VARCHAR(30),
        PRIMARY KEY (groupid)
);


CREATE TABLE t_user (
        userid INT NOT NULL,
        username VARCHAR(30),
        PRIMARY KEY (userid),


);


CREATE TABLE t_link (
        linkid INT NOT NULL,
        groupid INT,
        userid INT,
        PRIMARY KEY (linkid),
        FOREIGN KEY (groupid) REFERENCES t_group(groupid),
        FOREIGN KEY (userid) REFERENCES t_user(userid)
);


用SEQUENCE让数据库自动生成各表主键值。
CREATE SEQUENCE seq_group AS INT
  START WITH 1
  INCREMENT BY 1
  NO MAXVALUE
  NO CYCLE
  CACHE 100;


CREATE SEQUENCE seq_user AS INT
  START WITH 1
  INCREMENT BY 1
  NO MAXVALUE
  NO CYCLE
  CACHE 100;


CREATE SEQUENCE seq_link AS INT
  START WITH 1
  INCREMENT BY 1
  NO MAXVALUE
  NO CYCLE
  CACHE 100;


各表现在有这些数据待插入:
t_group:
Group1
Group2


t_user:
xiaoming
xiaohua


t_link:
Group1,xiaoming
Group2,xiaohua






对于表记录做更新操作:
INSERT INTO t_group VALUES (seq_group.nextval, 'Group1');
INSERT INTO t_group VALUES (seq_group.nextval, 'Group2');
INSERT INTO t_user VALUES (seq_user.nextval, 'xiaoming');
INSERT INTO t_user VALUES (seq_user.nextval, 'hua');


用$groupid和$userid分别表示groupid和userid的值。
INSERT INTO t_link VALUES (seq_link.nextval,$groupid,$userid);


请问怎么样让数据库能在往t_link表插数时自动查找到相应的groupid和userid的值?谢谢!收起
参与7

查看其它 5 个回答NullPlace的回答

NullPlaceNullPlace其它IBM
回复 2# wangyax


也许是我没说清楚,user xiaoming不会既可以在group1里面,也可以在group2里面。已经给定 (Group1,xiaoming) 是 t_link 表的输入数据,只是插到t_link表不能直接插group1,需要插group1对应的$groupid。同样插到t_link表不能直接插xiaoming,需要插xiaoming对应的$userid。
互联网服务 · 2014-10-28
浏览1095

回答者

NullPlace
其它IBM

NullPlace 最近回答过的问题

回答状态

  • 发布时间:2014-10-28
  • 关注会员:1 人
  • 回答浏览:1095
  • X社区推广