利用约束在sql中创建新表
我正试图根据以下信息创建一个查询。在尝试创建这个时,我一直违反主键 创建表编写器 作者VARCHAR24, lname VARCHAR210, fname VARCHAR210, isbn VARCHAR210, title VARCHAR230约束title\u nn不为空, 约束wt_pk主键authorid, 约束wt_fk外键isbn参考书isbn; 插入编剧 选择authorid、fname、lname、isbn、title 来自作者 使用authorid连接bookauthor 使用isbn连接书籍; 更改表格员工 添加约束et_pk 主键ssn;利用约束在sql中创建新表,sql,oracle,Sql,Oracle,我正试图根据以下信息创建一个查询。在尝试创建这个时,我一直违反主键 创建表编写器 作者VARCHAR24, lname VARCHAR210, fname VARCHAR210, isbn VARCHAR210, title VARCHAR230约束title\u nn不为空, 约束wt_pk主键authorid, 约束wt_fk外键isbn参考书isbn; 插入编剧 选择authorid、fname、lname、isbn、title 来自作者 使用authorid连接bookauthor 使用
您尝试解决的练习中最重要的信息是:不要复制这些表中的数据 在数据库模式中,有一个表bookauthor,它表示book表和author表之间的多对多关系。每个作者可以写多本书,在这种情况下,用于填充writers表的语句会为同一作者返回多行。这会导致您在批量插入期间出现主键冲突 您可以通过稍微修改查询来检查这一点,以查找结果中包含多行的authorid
SELECT authorid, count(1)
FROM author
JOIN bookauthor USING (authorid)
JOIN books USING (isbn)
GROUP BY authorid
HAVING COUNT(1) > 1;
主键设置为authorid的writers表不是很有用,因此在本练习中不应尝试填充它。请阅读并接受答案