先给 Name 加上唯一索引
BEGIN TRY
insert into tba(id,Name) values(@@IDENTITY,@name)
END TRY
BEGIN CATCH
--SQL Server 会在索引(内存)中检查唯一约束,产生的重复错误忽略掉
END CATCH
select @id = Id from tba where Name=@name
BEGIN TRY
insert into tba(id,Name) values(@@IDENTITY,@name)
END TRY
BEGIN CATCH
--SQL Server 会在索引(内存)中检查唯一约束,产生的重复错误忽略掉
END CATCH
select @id = Id from tba where Name=@name
解决方案 »
- !!!求助:两个表的比较和操作 求高手帮忙 小生感激涕零
- 在SQL Server 中,如何统计一个学员成绩表中所有奇数行的成绩
- 只用SQL怎么能解决么?
- Could not allocate space for object 'purls' in datebase 'mis' because the 'PRIMARY' filegroup is full 是什么错误
- 关于INSERT 插入数据时不可同时提交多条数据???
- 导入数据的问题!急
- SQL Server 2000里的频繁更新文件如何建立多个插入点来提升数据库性能?
- 拜托高手,给个存储过程或参考例子,如何直接把access数据库表中的记录导入到sql中?
- 如果把以下的字符串插入sqlserver
- 请catthunder(catthunder)、wxt(D.K)、scarlet(清风淡月)、libi()来领分,也欢迎其他人加入讨论。
- 求sql语句,高手请进
- 为什么我的查询分析器不能显示语法错误及输入智能提示?
如:vb程序的:
on error resume next
sSQL="insert into tba(Name) values(@name)"
.....
2、后台可以这样处理:--不用加事务
insert into tba(name) SELECT '123' WHERE NOT EXISTS(SELECT * FROM tba WHERE [Name]='123')
BEGIN TRY
insert into tba(id,Name) values(@@IDENTITY,@name)
END TRY
BEGIN CATCH
--SQL Server 会在索引(内存)中检查唯一约束,产生的重复错误忽略掉
END CATCH
select @id = Id from tba where Name=@name
这个开始不要判断 是否存在? 如果存在则返回一个 ID 出去
插入不成功,取的是存在记录的ID。
插入成功了,取的是新加记录的ID。
总之保证这个name有且仅有一个ID。