违反了 PRIMARY KEY 约束

jimskwan 2015-07-22 10:53:32
我的程序是在try里面进行insert语句,如果出现重复,到catch里面执行update语句,做了几个表都成功的,就是数据没有的话能够插入,数据有的话能够更新,那些表都有设置主键,但是不知道在Hospital表里面就只能插入数据,但是更新不了,这是为什么,附上代码
try
{
String sql = "INSERT INTO Hospital(HospitalID,ProvinceID,CityID,AreaID,HospitalName) values('1','1','1','1','测试名字')";
stmt = conn.createStatement();
stmt.execute(sql);
} catch (Exception e)
{
try
{
String sql = "UPDATE Hospital SET ProvinceID='2',CityID='2',AreaID='2',HospitalName='测试改' WHERE HospitalID='1'";
stmt = conn.createStatement();
stmt.execute(sql);
} catch (SQLException e1)
{
e.printStackTrace();
// TODO Auto-generated catch block
}
e.printStackTrace();
}
...全文
370 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
10软件1班 22号 周超 实验八 一、实验内容 以SPJ数据库为例,完成以下要求 1. 定义S、P、J、SPJ实体完整性 2. 表间的参照完整性 3. 用户定义完整性 二、实验过程 1. SQL定义各表 SQL: CREATE DATABASE SPJ ON(NAME='SPJ_DATA', FILENAME='E:\SPJ.mdf', SIZE=5MB, FILEGROWTH=10%) USE SPJ CREATE TABLE S (SNO CHAR(4) PRIMARY KEY, SNAME CHAR(20) UNIQUE, STATUS INT CHECK (STATUS>=10 AND STATUS<=50), CITY CHAR (20) NOT NULL); CREATE TABLE P (PNO CHAR(4) PRIMARY KEY, PNAME CHAR(20) NOT NULL, COLOR CHAR (10) NOT NULL, WEIGHT SMALLINT NOT NULL); CREATE TABLE J (JNO CHAR(4) PRIMARY KEY, JNAME CHAR(20) UNIQUE, CITY CHAR(20) NOT NULL); CREATE TABLE SPJ (SNO CHAR(4), PNO CHAR(4), JNO CHAR(4), QTY INT NOT NULL, PRIMARY KEY(SNO,PNO,JNO), FOREIGN KEY(SNO) REFERENCES S(SNO), FOREIGN KEY (PNO) REFERENCES P(PNO), FOREIGN KEY (JNO) REFERENCES J(JNO)); 附表:S表 P表 SPJ表 J表 2、(举例,违反3类完整性) 2.1、违反实体完整性(记下出错提示) 1、主码值不唯一 在J表中插入如下数据时 INSERT INTO J VALUES ('J1','三建','北京'); INSERT INTO J VALUES ('J1','一汽','长春'); 会出现提示错误:消息2627,级别14,状态1,第1 行 违反PRIMARY KEY 约束'PK__J__0425A276'。不能在对象'dbo.J' 中插入重复键。 语句已终止。 2、主码属性值为空 在J表中插入以下数据时 INSERT INTO J VALUES (null,'无线电厂','常州'); 出现错误提示: 消息515,级别16,状态2,第1 行 不能将值NULL 插入列'JNO',表'SPJ.dbo.J';列不允许有空值。INSERT 失败。 语句已终止。 2.2、违反参照完整性(记下出错提示) 在参照表中插入元组 在SPJ表中插入如下数据 INSERT INTO SPJ VALUES('S6','P1','J1','200'); 出现提示错误: 消息547,级别16,状态0,第1 行 INSERT 语句与FOREIGN KEY 约束"FK__SPJ__SNO__1CF15040"冲突。该冲突发生于数据库"SPJ",表"dbo.S", column 'SNO'。 语句已终止。 在参照表中修改外码值 在SPJ表中修改数据,输入如下SQL语句 UPDATE SPJ SET SNO='S6' WHERE SNO='S1'; 出现提示错误: 消息547,级别16,状态0,第1 行 UPDATE 语句与FOREIGN KEY 约束"FK__SPJ__SNO__1CF15040"冲突。该冲突发生于数据库"SPJ",表"dbo.S", column 'SNO'。 语句已终止。 在被参照表中删除元组 在J表中删除元组,输入如下语句并执行 DELETE FROM J WHERE JNO='J2'; 出现提示错误: 消息547,级别16,状态0,第1 行 DELETE 语句与REFERENCE 约束"FK__SPJ__JNO__1ED998B2"冲突。该冲突发生于数据库"SPJ",表"dbo.SPJ", column 'JNO'。 语句已终止。 在被参照表中修改外码值 在P表中修改数据,输入如下语句 UPDATE p SET PNO='P7' WHERE PNO='P5'; 出现提示错误: 消息547,级别16,状态0,第1 行 UPDATE 语句与REFERENCE 约束"FK__SPJ__PNO__1DE57479"冲突。该冲突发生于数据库"SPJ",表"dbo.SPJ", column 'PNO'。 语句已终止。 2.3、违反用户定义完整性(记下出错提示) 1、违反列值非空 在J 表中插入以下数据时 INSERT INTO J1 VA

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧