多人操作,插入一张表,如何保证主键不重复

cumtjianbolu 2006-09-20 05:21:50
各位大虾,小弟有一个问题,多人操作一张表,向这个表里插入记录,每次插入记录的时候,都要先给出这个表的最大值,如何才能保证插入不重复阿!
...全文
467 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
marco08 2006-09-21
  • 打赏
  • 举报
回复
主键是不重复, 如果出現重複就會報錯
可以考慮用事務
hyrongg 2006-09-21
  • 打赏
  • 举报
回复
插入的时候用这个方法取最大值,不要用MAX(ID)取最大值

SELECT @MAXID = SCOPE_IDENTITY()
chengpei_chen 2006-09-21
  • 打赏
  • 举报
回复
锁定,保证只能有一个人同一时间操作数据库
郭大侠_ 2006-09-20
  • 打赏
  • 举报
回复
像你这种情况,肯定要一个自增列,可以不显示给用户看,否则数据会乱的
至于 审批表号 ,用户进入界面时生成一个,保存之前验证唯一性,如果重复就提示用户。
cumtjianbolu 2006-09-20
  • 打赏
  • 举报
回复
自增列不能用的,我的主键是要打印出来的审批表号的!
splory 2006-09-20
  • 打赏
  • 举报
回复
-- 要测试并发带来的影响, 则开两个查询窗口, 一个执行上面的, 执行开始后(注意不是执行完成后), 在另一个查询窗口执行下面的

-- 追加数据处理
DECLARE @t1_id int
IF OBJECT_ID('tempdb..#') IS NOT NULL
DROP TABLE #
CREATE TABLE #(id int)

INSERT T1 VALUES(1)
SET @t1_id = SCOPE_IDENTITY()

INSERT T2(col) VALUES(12)
WAITFOR DELAY '00:00:02'
INSERT T2(col) VALUES(22)
WAITFOR DELAY '00:00:02'
INSERT T2(col) VALUES(32)
WAITFOR DELAY '00:00:02'
INSERT T2(col) VALUES(42)
WAITFOR DELAY '00:00:02'
INSERT T2(col) VALUES(52)

INSERT T3 SELECT @t1_id, id FROM #
DROP TABLE #

-- 显示结果
SELECT *
FROM T2, T3
WHERE T2.id = T3.t2_id
AND T3.t1_id = @t1_id
GO
splory 2006-09-20
  • 打赏
  • 举报
回复
就是并发性问题
引用邹建的
-- 测试数据
IF OBJECT_ID('T1') IS NOT NULL
DROP TABLE T1
IF OBJECT_ID('T2') IS NOT NULL
DROP TABLE T2
IF OBJECT_ID('T3') IS NOT NULL
DROP TABLE T3

CREATE TABLE T1(
id int IDENTITY, col int)
CREATE TABLE T2(
id int IDENTITY, col int)
CREATE TABLE T3(
t1_id int, t2_id int)
GO

-- 在t2上写个触发器, 传出数据
CREATE TRIGGER tr_T2_insert ON T2
FOR INSERT
AS
IF OBJECT_ID('tempdb..#') IS NOT NULL
INSERT # SELECT id FROM inserted
GO

-- 追加数据处理
DECLARE @t1_id int
IF OBJECT_ID('tempdb..#') IS NOT NULL
DROP TABLE #
CREATE TABLE #(id int)

INSERT T1 VALUES(1)
SET @t1_id = SCOPE_IDENTITY()

INSERT T2(col) VALUES(11)
WAITFOR DELAY '00:00:02'
INSERT T2(col) VALUES(21)
WAITFOR DELAY '00:00:02'
INSERT T2(col) VALUES(31)
WAITFOR DELAY '00:00:02'
INSERT T2(col) VALUES(41)
WAITFOR DELAY '00:00:02'
INSERT T2(col) VALUES(51)

INSERT T3 SELECT @t1_id, id FROM #
DROP TABLE #

-- 显示结果
SELECT *
FROM T2, T3
WHERE T2.id = T3.t2_id
AND T3.t1_id = @t1_id
GO

-- 删除测试
--DROP TABLE T1, T2, T3
vovo2000 2006-09-20
  • 打赏
  • 举报
回复
使用锁。
饮水需思源 2006-09-20
  • 打赏
  • 举报
回复
用事务来控制或将此列设置成自动递增标识列
kiki82715 2006-09-20
  • 打赏
  • 举报
回复
如果是自增列,本来就不会重复阿
为什么要学习这门课程?·新一代流式数据湖技术组件深入讲解,帮助你快速构造数据湖知识体系。·为构建湖仓一体架构提供底层技术支撑。本课程将从原理、架构、底层存储细节、性能优化、管理等层面对Paimon流式数据湖组件进行详细讲解,原理+实战,帮助你快速上手使用数据湖技术。讲师介绍华为HCIP认证大数据高级工程师北京猎豹移动大数据技术专家中科院大数据研究院大数据技术专家51CTO企业IT学院优秀讲师电子工业出版社2022年度优秀作者出版书籍:《Flink入门与实战》、《大数据技术及架构图解实战派》。本课程提供配套课件、软件、试题、以及源码。课程内容介绍:1、什么是Apache Paimon2、Paimon的整体架构3、Paimon的核心特点4、Paimon支持的生态5、基于Flink SQL操作Paimon6、基于Flink DataStream API 操作Paimon7、Paimon中的内部和外部8、Paimon中的分区和临时9、Paimon中的Primary Key(主键)10、Paimon中的Append Only(仅追加)11、Changelog Producers原理及案例实战12、Merge Engines原理及案例实战13、Paimon中的Catalog详解14、Paimon中的Table详解15、Paimon之Hive Catalog的使用16、动态修改Paimon属性17、查询Paimon系统18、批量读取Paimon19、流式读取Paimon20、流式读取高级特性Consumer ID21、Paimon CDC数据摄取功能22、CDC之MySQL数据同步到Paimon23、CDC之Kafka数据同步到Paimon24、CDC高级特性之Schema模式演变25、CDC高级特性之计算列26、CDC高级特性之特殊的数据类型映射27、CDC高级特性之中文乱码28、Hive引擎集成Paimon29、在Hive中配置Paimon依赖30、在Hive中读写Paimon31、在Hive中创建Paimon32、Hive和Paimon数据类型映射关系33、Paimon底层文件基本概念34、Paimon底层文件布局35、Paimon底层文件操作详解36、Flink流式写入Paimon过程分析37、读写性能优化详细分析38、Paimon中快照、分区、小文件的管理39、管理标签(自动管理+手工管理)40、管理Bucket(创建+删除+回滚)
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 愿景我们的愿景是成为 MyBatis 超好的搭档,就像 魂斗罗 中的 1P、2P,基友搭配,效率翻倍。 特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求支持 Lambda 形式调用:通过 Lambda 达式,方便的编写各类查询条件,无需再担心字段写错支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询内置全局拦截插件:提供全 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作 我们将通过理论与实操的方式来阐述 MyBatis-Plus 的强大功能,体验和学习MyBatis-Plus技术。

34,587

社区成员

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

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