插入避免主键重复问题

zhouliang0806 2011-05-12 06:49:51
通过什么语句来避免插入数据库的值,主键出现重复的问题
比如student表:
int id;
varchar name[20];
float name;
怎么判断表中id是否已经存在了?
...全文
359 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2011-05-12
  • 打赏
  • 举报
回复
select * from sys.key_constraints where type='pk'
zhouliang0806 2011-05-12
  • 打赏
  • 举报
回复
大家都去关注大乌龟了,谁来在给我补充一下啊,
谢谢大家了,
就是有什么语句能判断表中是否有了这个主键?
zhouliang0806 2011-05-12
  • 打赏
  • 举报
回复
是的,主键唯一的,重复了就插不进去了,但是我写的程序是实时插入数据表的问题。
数据是动态产生插入的,而且,这里的插入是自动进行的,如果有了重复问题就不插入,跳过,再插入下一条值。
而且我的表中还定义了组合主键,这个需要写语句判断是否有了这个主键,然后再执行是否插入的操作。
叶子 2011-05-12
  • 打赏
  • 举报
回复

--定义一个表
declare @student table
(id int primary key ,[name] varchar(20),[name1] float)
--插入一条数据
insert into @student
select 1,'a',2.45
--查看一下
select * from @student
/*
id name name1
----------- -------------------- ----------------------
1 a 2.45
*/
--再插入一个相同的id
insert into @student
select 1,'b',3.45
/*提示:
Violation of PRIMARY KEY constraint 'PK__#6C040022__6CF8245B'.
Cannot insert duplicate key in object 'dbo.@student'
*/
AcHerat 元老 2011-05-12
  • 打赏
  • 举报
回复
额。。。是主键列! 今天真是个杯具!
中国风 2011-05-12
  • 打赏
  • 举报
回复
把ID列設置用標識列

create table student(
ID int not null identity(1,1) primary key,
Name nvarchar(20),
......
)
AcHerat 元老 2011-05-12
  • 打赏
  • 举报
回复

--一般来说是设置自增列,如果你想判断插入,可以用触发器来控制,或者直接在程序里写方法控制!

create trigger t_in on tb
for insert
as
insert into tb
select *
from inserted t
where not exists (select 1 from tb where id = t.id)

--建议做自增列!
叶子 2011-05-12
  • 打赏
  • 举报
回复
主键是唯一的,如果设置了主键就有唯一约束了,重复的插不进去的!

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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