因本人对数据库不甚精通 所以请高手帮忙 回答后另开贴给分
问题如下
数据库表字段包括 A1 A2 A3 A4 A5 前台每分钟会储存数据过来 其中A1是编号 但和数据库里原有数据的编号不匹配 所以我想在数据储存过来的时候 把编号自动改成和原来匹配的 在原有数据的编号基础上每新增一条 编号自动加1
比如数据库里原有数据的编号是 225 226 最后一条是226
但前台现在传来的是A1的数据是 3302200 我要在3302200 这条存进去的时候自动把编号改成 227 然后新数据依次是 228 229 这样存储
存储过程该如何写 如何触发 请高手帮忙
问题如下
数据库表字段包括 A1 A2 A3 A4 A5 前台每分钟会储存数据过来 其中A1是编号 但和数据库里原有数据的编号不匹配 所以我想在数据储存过来的时候 把编号自动改成和原来匹配的 在原有数据的编号基础上每新增一条 编号自动加1
比如数据库里原有数据的编号是 225 226 最后一条是226
但前台现在传来的是A1的数据是 3302200 我要在3302200 这条存进去的时候自动把编号改成 227 然后新数据依次是 228 229 这样存储
存储过程该如何写 如何触发 请高手帮忙
if object_id('pro_test')is not null
drop proc pro_test
go
create proc pro_test
(
@A int,
@B varchar(20),
@C varchar(20)
)
as
declare @ID int
select @ID=top 1 ID from tb order by ID desc
insert tb(A,B,C)
select @ID,@B,@C
go
if object_id('pro_test')is not null
drop proc pro_test
go
create proc pro_test
(
@A int,
@B varchar(20),
@C varchar(20)
)
as
declare @ID int
select @ID=top 1 ID from tb order by ID desc
insert tb(A,B,C)
select @ID,@B,@C
go
那就直接给表添加一个字段,自增类型的,也不要用触发器
alter tb add ID int identity这样还不行的话就去建触发器吧
IF OBJECT_ID('tb') IS NOT NULL
DROP TABLE tb
GOcreate table tb
(
A1 varchar(10),
A2 varchar(10),
A3 varchar(10),
A4 varchar(10),
A5 varchar(10)
)GoIF OBJECT_ID('MaxKey') IS NOT NULL
DROP TABLE MaxKeyGO
--自增主键管理表
create table MaxKey
(
value int
)insert into MaxKey select 226GoIF OBJECT_ID('[proc_insert]') IS NOT NULL
DROP proc [proc_insert]GOCreate proc [dbo].[proc_insert] (@A1 varchar(10),@A2 varchar(10),@A3 varchar(10),@A4 varchar(10),@A5 varchar(10))as
begin declare @sql varchar(8000)
declare @value int
update MaxKey set value=value+1 --先更新再取出,防止多用户同时访问,造成主键重复
select @value=value from MaxKey
insert into tb select @value,@A2,@A3,@A4,@A5
ENDgo
--调用
[dbo].[proc_insert] '3302200','a2','a3','a4','a5'
select * from tb
drop proc pro_test
go
create proc pro_test
(
@A int,
@B varchar(20),
@C varchar(20)
)
as
declare @ID int
select @ID=top 1 ID from tb order by ID desc
insert tb(A,B,C)
select @ID,@B,@C
go