解决方案 »
- 求一条SQL语句
- 一个关于多个表的统计问题
- 怎样实现,到了一个时间,自动更新记录
- 如何实现这个结果,不太好说明,看脚本吧
- sqlserver 数据库设计问题
- 在sql server 2000中存在这样的日期数据“2009-05-11 12:12:12”,怎样转换主可以得到 “2009-05-11”这样的结果,是否有函数可以直接转换?
- 我的SQL Server 2000 只要一连接通本地网络或者上网就不能使用,请高手指点。
- 求高手赐教,这是哪里错了?
- 我想给我这个存储过程里加索引,让它执行的快点,咋加?
- sql中插入删除数据,因外键约束而失败,解决办法:
- sqlserver存储过程,可以将print打印的字符串写入到txt文件里吗?
- 一个表增加字段、触发器失败,一直显示sql语句执行中,但无法完成
[FID] [int] IDENTITY(1,1) NOT NULL,
[FTenNO] [varchar](50) NOT NULL,
[FName] [varchar](50) NULL,
[FTel] [varchar](50) NULL
) ON [PRIMARY]
INSERT INTO P_table (FTenNO, FName,FTel) VALUES ('2013T256', '客户1','8654321') -------开始---------
declare @newNo varchar(10),@i int,@s int
select @newNo=max(FTenNO)
from P_table
where FTenNO like '2013T%'
set @s=cast(case when isnull(@newNo,'')='' then '0' else right(@newNo,3) end as int)+1
set @newNo=stuff('2013T000',9-len(@s),len(@s),@s)
INSERT INTO P_table (FTenNO, FName,FTel) VALUES (@newNo, '客户1','8654321')
-------结束----------
--从开始到结束执行三次后,结果如下:/*
1 2013T256 客户1 8654321
2 2013T257 客户1 8654321
3 2013T258 客户1 8654321
4 2013T259 客户1 8654321*/
在插入前按上面的规则最到最新值就可以了,而且不容易出错.
if object_id('p_table')is not null
drop table p_table
go
CREATE TABLE [dbo].[P_table](
[FID] [int] IDENTITY(1,1) NOT NULL,
[FTenNO] [varchar](50) NOT NULL,
[FName] [varchar](50) NULL,
[FTel] [varchar](50) NULL
) ON [PRIMARY]
go
create function df_series()
returns varchar(20)
as begin
declare @number int,@reval varchar(20)
set @number=1
set @reval=''
select @number=right(isnull(max(ftenNO),0),3)*1+1 from p_table
set @reval='2013T'+right('0000'+rtrim(@number),3)
return @reval
end
go
alter table p_table add constraint df_p_table default dbo.df_series() for ftenno
go
INSERT INTO P_table ( FName,FTel) VALUES ( '客户1','8654321')
go 20
select * from p_table
大神你有考虑过,您代码的的第24行(帖子里)的插入语句,如果我的这个表有1000个字段你怎么处理这行语句?这么写肯定不现实,是不是应该select查询出来?整体的复制回去?求大神更新
大神你好,您有考虑过,您代码的的第18行(帖子里)的插入语句,如果我的这个表有1000个字段你怎么处理这行语句?这么写肯定不现实,是不是应该select查询出来?整体的复制回去?求大神更新,而且如果变成客户2了,1000列字段,那得累屎啊…… 哈哈