sql两张表编号设计问题

happydaily 2010-11-17 10:01:48
主表 ID(自动),bianhao,是一列自定义复杂点的编号.
副表 ID(自动),bianhao,对应主表的ID.
在程序里设计插入主表一行同时副表插入一行数据.这时我用了事务让它们一起进行,现在的问题来了,两张表都插入了一些数据,比如3行,这时把数据都删除了,取主表的ID显示为空,但事实上自动列不归零,导致主表插入了数据为 4,YYZZDDD00001,副表插入的却是4,1.解决的办法,1,先插入主表再取出主表ID给副表,也就是不用事务,这样做我担心两个人同时插入会不会出问题?2,副表的bianhao改为对应主表的bianhao,这样做索引效率会很低的?
...全文
56 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
coleling 2010-11-17
  • 打赏
  • 举报
回复
先插入主表再取出主表ID给副表
用SCOPE_IDENTITY()来取出主表ID,因为SCOPE_IDENTITY()取得是当前会话当前作用域标识值,所以多人同时插入肯定不会出问题。
-晴天 2010-11-17
  • 打赏
  • 举报
回复
不用事务,在主表中设计一个触发器,当主表插入数据时,将主表ID添加到副表中去.
CREATE TRIGGER setid 
ON 主表
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
insert into 副表(bianhao) select id from inserted
END
GO

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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