重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
两种方案
成都创新互联公司主营平定网站建设的网络公司,主营网站建设方案,App定制开发,平定h5重庆小程序开发搭建,平定网站营销推广欢迎平定等地区企业咨询
第一种方案, 你在添加库存时, 把用户输入作为条件查询一下数据库, 也就是
select count(*) from kucun where product=** and warese=** and unit=**
查询结果如果返回值0, 表示库中已经有一条这样的记录了, 所以你就弹出提示让用户修改值后再进行插入, 此处可以用AJAX验证
第二种方案, 把数据库的这三个字段设置为联合主键, 插入时不需要验证直接插入, 如果数据相同则会报错
你try/catch一下代码, 在catch里对异常进行判断, 如果是主键异常则提示用户修改数据后插入
推荐第一种
为了简洁,findById(...)没有支持联合主键。如果需要这个功能的话可以这样写代码:YourModel.dao.findFirst(select * from xxx where a_id = ? and b_id = ?, x, y); JFinal 很多设计都是尽量只提供最常用的功能,但少用的功能也有办法做得到,这样就能保证JF的代码量不会过于膨胀,bug 也相应会减少
不是sql的问题,是你主键的选择有问题。主键是不能修改的,而你这边用的是联合主键,学号,课程号一起作为联合主键,结果自然是不能改学号以及课程号。(总之,主键不能修改)
方法麻:
1.新增,删除自然是没问题,但是当要将某个已选课程换为其它课程时,先删掉原记录,然后重新插入一条。
2.不用联合主键来实现,代码里面自已加入不允许重复的学号+课程号的判断。
java 中注解联合表joint table可以使用如下方式:
@ManyToMany
@JoinTable(name="T_S",//指定表名
joinColumns={
@JoinColumn(name="TID")//指定主键
},
inverseJoinColumns={
@JoinColumn(name="SID")//指定主键
}
)
java写代码解决主外健的问题,
1、主键:
若某一个属性组(注意是组)能唯一标识一条记录,该属性组就是一个主键。主键不能重复,且只能有一个,也不允许为空。定义主键主要是为了维护关系数据库的完整性。
2、外键:
外键用于与另一张表的关联,是能确定另一张表记录的字段。外键是另一个表的主键,可以重复,可以有多个,也可以是空值。定义外键主要是为了保持数据的一致性。
3、索引:
索引是对表中一个或多个列的值进行排序的结构。
1) 应该创建索引的列的特点:
① 在经常需要搜索的列上创建索引,可以加快搜索的速度;
② 在作为主键的列上创建索引,强制该列的唯一性;
③ 在经常用在连接的列上创建索引,主要是一些外键,可以加快连接的速度;
④ 在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;在经常需要排序的列上创建索引,因为索引已经排序,可以利用索引的排序加快查询;
⑤ 在经常使用在WHERE子句中的列上创建索引,加快条件的判断速度。
2) 不应该创建索引的列的特点:
① 在查询中很少使用的列上不应该创建索引,因为这些列很少使用到,因此有索引或无索引,并不能提高查询速度,相反由于增加了索引,反而降低了系统维护速度,增大了空间需求;
② 在只有很少数据值的列上不应该创建索引,很少数据值的列如性别等,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大,增加索引,并不能明显加快检索速度;
③ 当修改性能远远大于检索性能时,不应该创建索引,因为改性能和检索性能是互相矛盾的,当增加索引时,会提高检索性能,但会降低修改性能,当减少索引时,会提高修改性能,但会降低检索性能。因此,当修改性能远大于检索性能时,不应该创建索引。
3) 可以在数据库设计器中创建三种索引:
① 唯一索引:
不允许其中任何两行具有相同索引值的索引。
② 主键索引:
表的某一列或列组合,其值唯一标识表中的每一行,该列或列组合称为表的主键。为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。该索引要求主键中的每个值都唯一。
③ 聚集索引:
聚集索引:聚集索引表示表中存储的数据按照索引的顺序存储。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。
聚集索引实例:字典默认按字母顺序排序,如知道某个字的读音可根据字母顺序快速定位。
非聚集索引:非聚集索引表示数据存储在一个地方,索引存储在另一个地方,索引带有指针指向数据的存储位置,需要查询两个地方才能查找到数据。一个表可以包含多个非聚集索引,可以为查找数据时常用的每个列创建一个非聚集索引。
非聚集索引实例:如需查询某个生僻字,则需按字典前面的索引,如按偏旁进行定位,找到该字对应的页数,再打开对应页数找到该字。
与非聚集索引相比,聚集索引通常提供更快的数据访问速度,但对数据更新影响较大。
4)索引的优点:
加快对数据的检索。
5)索引的缺点:
① 减慢数据录入的速度;
② 增加了数据库的尺寸大小。
4、主键和外键的关系:
外键是另一个表的主键,主键是可以被外键有效引用的对象。若A表中的一个字段,是B表的主键,则它可以是A表的外键。