数据库存储过程多用户同时冲突问题解决构思

1 写个函数自动生成流水号

--得到最新编号的函数
create function f_newid()
returns char(7)   --编号位数固定,用char的检索效率高于varchar
as
begin
    declare @re char(7)
    select @re=max(BHID) from 表(tablockx) --加表级锁
    return(
       case when @re is null then 'BH00001'
           else 'BH'+right('0000'+cast(cast(right(@re,5) as int)+1 as varchar),5)
       end)
end
go

函数调用方法:

如果是标值量函数:
select dbo.函数名(参数们)

如果是表值函数:
select * from 函数名(参数们)

2 将流水号插入临时表#code

3 将数据存储到流水号命名的临时表#salebase_流水号。

4 drop 所有临时表

 

转载于:https://www.cnblogs.com/CandiceW/p/4459727.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
八皇后问题是一个经典的回溯算法问题,要求在一个 8x8 的棋盘上放置八个皇后,使得它们互相之间不会攻击到对方。 一种常见的解决方法是使用递归函数进行回溯搜索。具体步骤如下: 1. 定义一个一维数组 `board`,长度为 8,用于存储每一行皇后的位置。例如,`board[0]=3` 表示第一行的皇后在第 4 列。 2. 定义一个递归函数 `place_queen(row)`,用于在第 `row` 行放置皇后。该函数的具体实现如下: - 对于每一列,分别尝试将皇后放置在该列上,并检查是否与已放置的皇后冲突。 - 如果该列没有冲突,则将皇后放置在该列上,并递归调用 `place_queen(row+1)` 进行下一行的放置。 - 如果所有列都尝试过了,但都冲突了,则回溯到上一行,重新尝试其他列的放置,直到找到一个合法的放置方案或者回溯到第一行仍未找到方案。 3. 在主函数中调用 `place_queen(0)`,从第一行开始进行皇后的放置。 4. 如果成功找到一个合法的放置方案,将 `board` 数组打印出来即可。 下面是具体的代码实现(使用 Python 语言): ```python board = [-1] * 8 # 初始化 board 数组 def is_valid(row, col): """检查 (row, col) 是否与已放置的皇后冲突""" for i in range(row): if board[i] == col or abs(board[i] - col) == abs(i - row): return False return True def place_queen(row): """在第 row 行放置皇后""" if row == 8: return True # 所有皇后都已放置完毕,找到了一种合法方案 for col in range(8): if is_valid(row, col): board[row] = col if place_queen(row+1): return True # 找到了一种合法方案,直接返回 board[row] = -1 # 回溯到上一行 return False # 找不到合法方案,需要继续回溯 place_queen(0) # 从第一行开始放置皇后 print(board) # 打印最终的皇后位置 ``` 输出结果为 `[0, 4, 7, 5, 2, 6, 1, 3]`,表示第一行皇后在第 1 列,第二行皇后在第 5 列,以此类推。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值