【发布时间】:2020-02-22 01:05:34
【问题描述】:
学习SQL并创建了下表:
+-------+-------+---------+-----------------------+---------+----------+
| idnum | lname | fname | rname | private | linkblue |
+-------+-------+---------+-----------------------+---------+----------+
| 40256 | South | William | south.william@uky.edu | 1 | weso123 |
| 68123 | Smith | Terry | smith.terry@uky.edu | 1 | tlsm321 |
+-------+-------+---------+-----------------------+---------+----------+
我需要使用将其中一个名称的地址信息输入到另一个带有以下条目的表中,使用以下代码创建表:
CREATE TABLE ADDR (idnum INT NOT NULL, adtype varchar(10), CONSTRAINT ad CHECK (adtype IN ('bill', 'permanent', 'local')), streetaddr varchar(60) NOT NULL, city varchar(40) NOT NULL, state char(2) NOT NULL, country char(2) NOT NULL, zip varchar(10), PRIMARY KEY (idnum), FOREIGN KEY (idnum) REFERENCES PERSON (idnum));
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| idnum | int(11) | NO | PRI | NULL | |
| adtype | varchar(10) | YES | | NULL | |
| streetaddr | varchar(60) | NO | | NULL | |
| city | varchar(40) | NO | | NULL | |
| state | char(2) | NO | | NULL | |
| country | char(2) | NO | | NULL | |
| zip | varchar(10) | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
但是我需要为那个人输入两个地址,一个是本地地址,一个是帐单地址,但我不断收到以下错误:
ERROR 1062 (23000): Duplicate entry '40256' for key 'PRIMARY'
这是我用来尝试输入该数据的代码:
INSERT INTO ADDR VALUE (40256, "bill", "street1", "city1", "state1", "country1", zip1), (40256, "local", "street2", "city2", "state2", "country2", zip2);
【问题讨论】:
-
您应该有一个单独的列来存储 personid。并为 idnum 列分配唯一值。所以 personid 列的值为 40256,idnum 列的值为 1,2,3... 等等
-
你用的是哪个RDMS mysql不等于sql server
标签: mysql sql-server