本文主要介绍了SQL Server数据库中主键以及复合主键的配置,接下来我们就开始介绍。

创新互联公司是专业的龙华网站建设公司,龙华接单;提供成都网站设计、做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行龙华网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
一般情况下一个表中的主键,id intidentity(1,1)primary key
这是最常见的咯,用注解的形式标记这种主键也很简单
- @Id
 - @GeneratedValue
 - @Column(name="RecId")
 - public int getRecId() {
 - return RecId;
 - }
 
复合主键个人认为用到的很少,呜呜还是碰到了,由于没有经验,东装西摸,浪费了很长时间才把复合主键配好了,并且还出了很多异常,如下所示:
一個裱中可以有多個字段組成的主鍵
- create table EL_TransIdTable(
 - TableName nvarchar(50) ,
 - LastTransId nvarchar(15),
 - Prefix nchar(5),
 - DomainId nvarchar(10) primary key(TableName,DomainId)
 - )
 
其中TableName 、DomainId两个字段作为此表的主键。
在配置中主要分为两个步骤:
1 为复合主键,建立一个复合主键类,这个类包括两个字段,(有几个字段组成主键 就包含几个字段 )这个复合主键类实现Serializable接口,有public 无参的构造方法 重写equals 和hashcode方法。
2:在实体类里面用idclass标示复合主键类 详情如下:
新建复合主键类TableDomainIdPK.java。
- package com.barcode.Model;
 - import java.io.Serializable;
 - public class TableNameDomainIdPK implements Serializable{
 - public TableNameDomainIdPK(){
 - }
 - private String TableName;
 - private String DomainId;
 - public String getTableName() {
 - return TableName;
 - }
 - public void setTableName(String tableName) {
 - TableName = tableName;
 - }
 - public String getDomainId() {
 - return DomainId;
 - }
 - public void setDomainId(String domainId) {
 - DomainId = domainId;
 - }
 - @Override
 - public int hashCode() {
 - final int PRIME = 31;
 - int result =1;
 - result=PRIME*result+((TableName==null)?0:TableName.hashCode());
 - result=PRIME*result+((DomainId==null)?0:DomainId.hashCode());
 - return result;
 - }
 - @Override
 - public boolean equals(java.lang.Object obj) {
 - if(this ==obj){
 - return true;
 - }
 - if(null ==obj ){
 - return false;
 - }
 - final TableNameDomainIdPK other=(TableNameDomainIdPK)obj;
 - if(DomainId==null){
 - if(other.DomainId!=null){
 - return false;
 - }
 - }else if(!DomainId.equals(other.DomainId)){
 - return false;
 - }
 - if(TableName==null){
 - if(other.TableName!=null){
 - return false;
 - }
 - }else if (!TableName.equals(other.TableName)){
 - return false;
 - }
 - return true;
 - }
 - }
 
新建实体类EL_TransIdTable.java。
实体类中的配置如下:
- package com.barcode.Model;
 - import java.io.Serializable;
 - import javax.persistence.Column;
 - import javax.persistence.Entity;
 - import javax.persistence.Id;
 - import javax.persistence.IdClass;
 - import javax.persistence.Table;
 - @Entity
 - @Table(name="EL_TransIdTable")
 - @IdClass(TableNameDomainIdPK.class)
 - public class EL_TransIdTable implements Serializable {
 - private String TableName;
 - private String LastTransId;
 - private String Prefix;
 - private String DomainId;
 - @Id
 - @Column(name="TableName", nullable = false)
 - public String getTableName() {
 - return TableName;
 - }
 - public void setTableName(String tableName) {
 - TableName = tableName;
 - }
 - @Column(name="LastTransId")
 - public String getLastTransId() {
 - return LastTransId;
 - }
 - public void setLastTransId(String lastTransId) {
 - LastTransId = lastTransId;
 - }
 - @Column(name="Prefix")
 - public String getPrefix() {
 - return Prefix;
 - }
 - public void setPrefix(String prefix) {
 - Prefix = prefix;
 - }
 - @Id
 - @Column(name="DomainId", nullable = false)
 - public String getDomainId() {
 - return DomainId;
 - }
 - public void setDomainId(String domainId) {
 - DomainId = domainId;
 - }
 - public void Print_Info(){
 - System.out.println(this.getDomainId()+this.getLastTransId()+this.getPrefix()+this.getTableName());
 - }
 - }
 
关于SQL Server数据库复合主键的设置就介绍到这里,希望能够对您有所收获!
【编辑推荐】
                当前题目:SQLServer数据库主键及复合主键的配置
                
                文章起源:http://www.csdahua.cn/qtweb/news26/272276.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网