⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 以另一表的字段生成编号.sql

📁 sqlserver 数据库编程的绝好脚本
💻 SQL
字号:
--创建自定义函数,得到新的ID
create function f_getid(
@BookIndex_ISBN char(25))
returns int
as
begin
	return(
		select isnull(right(max(BookIndex_Bar_Code),7),0)+10000001
		from 图书索引表 
		where BookIndex_ISBN=@BookIndex_ISBN
	)
end
go

--创建测试表
create table 图书基本信息表(
Book_ISBN char(25) not null primary key,
Book_Category char(3) null)
insert 图书基本信息表 select 'A001','001'
union  all           select 'A002','002'

create table 图书索引表(
BookIndex_Index char(20) null,
BookIndex_Bar_Code char(10) null,
BookIndex_ISBN char(25) not null
	constraint fk_BookIndex_ISBN_Book_ISBN foreign key
		references 图书基本信息表(Book_ISBN) 
		on update cascade on delete cascade)
go

--创建触发器,自动生成图书索引号
create trigger t_insert on 图书索引表
instead of insert
as
select * into #t from inserted order by BookIndex_ISBN

declare @BookIndex_ISBN char(25),@id int
update a 
	set @id=case 
			when @BookIndex_ISBN=a.BookIndex_ISBN
			then @id+1 else dbo.f_getid(BookIndex_ISBN) 
		end
	,BookIndex_Bar_Code=b.Book_Category+right(@id,7)
	,@BookIndex_ISBN=a.BookIndex_ISBN
from #t a join 图书基本信息表 b on a.BookIndex_ISBN=b.Book_ISBN

insert into 图书索引表 select * from #t
go

--插入数据测试
insert into 图书索引表(BookIndex_Index,BookIndex_ISBN)
select 'A01','A001'
union all select 'A02','A002'
union all select 'A03','A001'

insert into 图书索引表(BookIndex_Index,BookIndex_ISBN)
select 'B01','A001'
union all select 'B02','A002'

--显示结果
select * from 图书索引表
go

--删除测试
drop table 图书索引表,图书基本信息表
drop function f_getid

/*--测试结果

BookIndex_Index      BookIndex_Bar_Code BookIndex_ISBN            
-------------------- ------------------ ------------------------- 
A01                  0010000001         A001                     
A03                  0010000002         A001                     
A02                  0020000001         A002                     
B01                  0010000003         A001                     
B02                  0020000002         A002                     

(所影响的行数为 5 行)
--*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -