因本人对数据库不甚精通 所以请高手帮忙 回答后另开贴给分
问题如下
数据库表字段包括 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 这样存储
存储过程该如何写 如何触发 请高手帮忙
解决方案 »
- 超级复杂 难度10颗星 的 高深 SQL语句问题,跪求 各位牛牛的大大们的帮助
- 求各位前辈帮忙,一条sql
- 求一个视图
- 求助:怎樣刪除重復記錄
- 请问如何利用发布/订阅 来处理中心订阅者方案的,高手近来!!!
- 查询语句 where 条件里的查询结果为NULL时怎么赋值
- 各位做过供应链方面的系统吗
- SQL SERVER扩展存储过程怎么传递参数
- SQL本地数据库更新到服务器的解决方法!请高手指教!!
- 急,如何在sql2000里做主从表连接
- 数据库DB有A,B,C3张表,怎样实现给一个下拉框,让用户选择任意一张表,再按按钮就导出格式是excel?手工操作会了,编程怎么实现
- SQL 2005数据库备份的问题!
Values( select MAX(A1)+1 AS Num FROM 数据库表 ,)
--设置为自增的吧,后台不要往A1插入数据就可以了
alter table t drop column A1;
alter table t add A1 int identity(1,1) not null;
on student
for update
as
if
update(A1)
begin
select MAX(A1)+1 AS ID FROM tab
rollback tran
end
go
on tab
for update
as
if
update(A1)
begin
select MAX(A1)+1 AS ID FROM tab
rollback tran
end
go
还有 这个是新建一个存储过程就可以了吗
直接新建一个储存过程 写这段代码就可以了吗
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
[dbo].[proc_insert] '3302200','a2','a3','a4','a5'
IF OBJECT_ID('tb') IS NOT NULL
DROP TABLE tb
GOcreate table tb
(
id int primary key, --需要有主键
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('[tr_insert]') IS NOT NULL
DROP trigger [proc_insert]GO
Create trigger tr_insert on tb
for insert
as declare @sql varchar(8000)
declare @value int
declare @A1 varchar(10)
update MaxKey set value=value+1 --先更新再取出,防止多用户同时访问,造成主键重复
select @value=value from MaxKey
select @A1=A1 from inserted
update tb set A1=@value from tb where A1=@A1
--测试
insert into tb select 1,'A1','A2','A3','A4','A5'
select * from tb
DROP TABLE tb
GOcreate table tb
(
id int primary key, --需要有主键
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('[tr_insert]') IS NOT NULL
DROP trigger [proc_insert]GO
Create trigger tr_insert on tb
for insert
as declare @sql varchar(8000)
declare @value int
declare @ID int
update MaxKey set value=value+1 --先更新再取出,防止多用户同时访问,造成主键重复
select @value=value from MaxKey
select @ID=ID from inserted
update tb set A1=@value from tb where ID=@ID
--测试
insert into tb select 1,'A1','A2','A3','A4','A5'
select * from tb
还有一个问题请教 A1是编号 但里面的的编号是根据A2 也就是name来排列的 只有name相同的编号才是有序的 现在是要name=zhangsan的时候 张三的编号自动修改并加1 别的name不需要修改 前台自己操作 这个该怎么操作啊