SQL 插入语句要求主键输入不能重复不能为空 sql语句怎么写

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 插入语句要求主键输入不能重复不能为空 sql语句怎么写相关的知识,希望对你有一定的参考价值。

INSERT INTO [dbo].[试卷管理]([编号], [学年], [学期], [课程编号], [课程名称], [任课教师],       [任课班级], [考试性质], [归档日期], [存放位置], [经手人])VALUES (@编号,@学年,@学期,@课程编号,@课程名称,@任课教师,@任课班级,@考试性质,@归档日期,@存放位置,@经手人) 我把编号设置为主键,我这条sql语句要怎么写才能输入主键重复或为空时设置报错处理,我是用vb+sql2000写的 

如果你设好主键,主键重复或为空时会自动报错的.
设主键的语句是ALTER TABLE 试卷管理 ADD PRIMARY KEY (编号)
参考技术A 你是想写个语句在 输入主键重复或为空时 提示报错

还是问添加primary key的语句?
参考技术B 主键是不可以重复的

SQL约束

SQL常用约束语句

 

常用五类约束:      not null:非空约束,指定某列不为空      unique: 唯一约束,指定某列和几列组合的数据不能重复      primary key:主键约束,指定某列的数据不能重复、唯一      foreign key:外键,指定该列记录属于主表中的一条记录,参照另一条数据      check:检查,指定一个表达式,用于检验指定数据    注意: MySQL不支持check约束,但可以使用check约束,而没有任何效果;

根据约束数据列限制,约束可分为:      单列约束:每个约束只约束一列      多列约束:每个约束约束多列数据 1、not null   非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。       *Null类型特征: 所有的类型的值都可以是null,包括int、float等数据类型 空字符串””是不等于null,0也不等于null create table temp(  id int not null,  name varchar(255) not null default ‘abc’, sex char null  ) 上面的table加上了非空约束,也可以用alter来修改或增加非空约束 增加非空约束    alter table temp modify sex varchar(2) not null; 取消非空约束    alter table temp modify sex varchar(2) null; 取消非空约束,增加默认值    alter table temp modify sex varchar(2) default ‘abc’; 2、unique   唯一约束是指定table的列或列组合不能重复,保证数据的唯一性。虽然唯一约束不允许出现重复的值,但是可以为多个null,同一个表可以有多个唯一约束,多个列组合的约束。在创建唯一约束的时候,如果不给唯一约束名称,就默认和列名相同。 MySQL会给唯一约束的列上默认创建一个唯一索引; create table temp (  id int not null,  name varchar(25),  password varchar(16),  constraint uk_name_pwd unique(name, password)  );   unique(name, password)表示用户名和密码组合不能重复    添加唯一约束      alter table temp add unique(name, password);   修改唯一性约束      alter table temp modify name varchar(25) unique;   删除约束      alter table temp drop index name;

3、primary key   主键约束相当于唯一约束+非空约束的组合,主键约束列不允许重复,也不允许出现空值;如果的多列组合的主键约束, 那么这些列都不允许为空值,并且组合的值不允许重复。 每个表最多只允许一个主键,建立主键约束可以在列级别创建,也可以在表级别上创建。    MySQL的主键名总是PRIMARY, 当创建主键约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。  列模式:    create table temp(   id int primary key,   name varchar(25)   );   create table temp2(   id int not null,   name varchar(25),   pwd varchar(15),   constraint pk_temp_id primary key(id)   ); 组合模式:    create table temp2(   id int not null,   name varchar(25),   pwd varchar(15),   constraint pk_temp_id primary key(name, pwd)   ); alter删除主键约束   alter table temp drop primary key; alter添加主键   alter table temp add primary key(name, pwd); alter修改列为主键   alter table temp modify id int primary key; 设置主键自增    create table temp(   id int auto_increment primary key,   name varchar(20),   pwd varchar(16)   ); auto_increment自增模式,设置自增后在插入数据的时候就不需要给该列插入值了。

4、foreign key   外键约束是保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系。 也就是说从表的外键值必须在主表中能找到或者为空。 当主表的记录被从表参照时,主表的记录将不允许删除,如果要删除数据,需要先删除从表中依赖该记录的数据, 然后才可以删除主表的数据。还有一种就是级联删除子表数据。 注意:外键约束的参照列,在主表中引用的只能是主键或唯一键约束的列,假定引用的主表列不是唯一的记录, 那么从表引用的数据就不确定记录的位置。同一个表可以有多个外键约束。 创建外键约束: 主表   create table classes(   id int auto_increment primary key,   name varchar(20)   ); 从表   create table student(   id int auto_increment,   name varchar(22),   constraint pk_id primary key(id),   classes_id int references classes(id)   ); 通常先建主表,然后再建从表,这样从表的参照引用的表才存在。 表级别创建外键约束:   create table student(   id int auto_increment primary key,   name varchar(25),   classes_id int,   foreign key(classes_id) references classes(id)   ); 上面的创建外键的方法没有指定约束名称,系统会默认给外键约束分配外键约束名称,命名为student_ibfk_n, 其中student是表名,n是当前约束从1开始的整数。 指定约束名称:   create table student(   id int auto_increment primary key,   name varchar(25),   classes_id int,   constraint fk_classes_id foreign key(classes_id) references classes(id)   ); 多列外键组合,必须用表级别约束语法:   create table classes(   id int,   name varchar(20),   number int,   primary key(name, number)   );   create table student(   id int auto_increment primary key,   name varchar(20),   classes_name varchar(20),   classes_number int,   foreign key(classes_name, classes_number) references classes(name, number)   ); 删除外键约束:   alter table student drop foreign key student_ibfk_1;   alter table student drop foreign key fk_student_id; 增加外键约束:   alter table student add foreign key(classes_name, classes_number) references classes(name, number); 自引用、自关联(递归表、树状表)   create table tree(   id int auto_increment primary key,   name varchar(50),   parent_id int,   foreign key(parent_id) references tree(id)   ); 级联删除:删除主表的数据时,关联的从表数据也删除,则需要在建立外键约束的后面增加on delete cascade 或on delete set null,前者是级联删除,后者是将从表的关联列的值设置为null。   create table student(   id int auto_increment primary key,   name varchar(20),   classes_name varchar(20),   classes_number int, /*表级别联合外键*/   foreign key(classes_name, classes_number) references classes(name, number) on delete cascade   ); 5、check   MySQL可以使用check约束,但check约束对数据验证没有任何作用。   create table temp(   id int auto_increment,   name varchar(20),   age int,   primary key(id),   check(age > 20)   );

以上是关于SQL 插入语句要求主键输入不能重复不能为空 sql语句怎么写的主要内容,如果未能解决你的问题,请参考以下文章

SQL中主键的使用

SQL Server中常用的SQL语句

sql 表A添加一个非自增长字段B ,B 是主键,不能为空 语句该怎么写 或者怎么设置

(转)sql 违反了 PRIMARY KEY 约束,不能在对象 中插入重复键

mysql “索引”能重复吗?“唯一索引”与“索引”区别是啥?

Sql (Oracle)--不能插入值(可能是约束因素)