这个insert语句有什么问题?

时间:2015-11-10 13:47:54

标签: sql-server database sql-insert create-table

鉴于以下两个表:

CREATE TABLE Members(

email VARCHAR(20) PRIMARY KEY,
password VARCHAR(20),
pref_game_genre VARCHAR(20)

)

CREATE TABLE Normal_Users(

email VARCHAR(20) PRIMARY KEY FOREIGN KEY REFERENCES Members,
first_name VARCHAR(20),
last_name VARCHAR(20),
date_of_birth date,
age as (YEAR(CURRENT_TIMESTAMP) - YEAR(date_of_birth))
)

我正在尝试执行以下insert语句:

 INSERT INTO Normal_Users VALUES('testemail@gmail.com', 'Adam', 'Robert', '05-04-1990')

但是我收到以下错误:

  

INSERT语句与FOREIGN KEY约束“FK__Normal_Us__email__74994623”冲突。冲突发生在数据库“DatabasesProject”,表“dbo.Members”,列“email”中。   声明已经终止。

我做错了什么?

2 个答案:

答案 0 :(得分:3)

您必须首先填充Members表。

INSERT INTO Members(email) VALUES('testemail@gmail.com')
INSERT INTO Normal_Users VALUES('testemail@gmail.com', 'Adam', 'Robert', '05-04-1990')

答案 1 :(得分:0)

在Normal_Users上,您将电子邮件设置为主键和外键。

更好的解决方案是仅将电子邮件设置为外键,并选择另一个作为主键(可能是生成的ID)。