CREATE TRIGGER [memnuminsert] ON [dbo].[TB_Data_2_7] 
FOR INSERT 
ASdeclare @BatchName varchar(30),@PicName varchar(30),@MemNum varchar(30),@MemNum1 bigint,@CardNum varchar(3),@CardType varchar(1), @NoUseredMemNum bigintselect @BatchName = BatchName from inserted
select @PicName = PicName from inserted
select @MemNum = MEMNUM from inserted
select @CardNum = (Select CPNUM from TB_Data_1_7 Where BatchName = @BatchName AND PicName = @PicName)
select @CardType = (select DECN3RD from TB_Data_1_7 Where BatchName = @BatchName AND PicName = @PicName)if ((charindex('170' , @CardNum) > 0) or (charindex('171', @CardNum) > 0)) and (@CardType = 'A')
begin
if (@MemNum = '') or (@MemNum is null)
begin
select @NoUseredMemNum = (select min(MEMNUM) from TB_MemNum Where IsUsered = 0)
if (@NoUseredMemNum = '') or (@NoUseredMemNum is null)
begin
select @MemNum1 = (Select max(MEMNUM) from TB_MemNum where MEMNUM >= 750000)
if (@MemNum1 is null) or (@MemNum1 = '')
begin
Insert Into TB_MemNum values(@BatchName, @PicName, 750000, 1)
update TB_Data_2_7 set MEMNUM = '750000' Where BatchName = @BatchName AND PicName = @PicName
end
else
begin
Insert Into TB_MemNum values(@BatchName, @PicName, (@MemNum1 + 1), 1)
Update TB_Data_2_7 set MEMNUM = cast((@MemNum1 + 1) AS varchar(30)) Where BatchName = @BatchName AND Picname = @PicName
end
end
else
begin
update TB_MemNum Set BatchName = @BatchName, PicName = @PicName, IsUsered = 1 Where MemNum = @NoUseredMemNum
update TB_Data_2_7 set MemNum = @NoUseredMemNum Where BatchName = @BatchName AND PicName = @PicName
end
end
else
begin
Insert Into TB_MemNum values(@BatchName, @PicName , @MemNum, 1)
end
end当@CardNum为170 或则 171 的时候都能正常更新TB_Data_2_7表中的MEMNUM字段, 但是为 110,170 或110,171都不能正常更新, 请问是为什么呢? 是charindex的问题吗? 还是其他为题, 但是我正常执行 Select charindex('170','110,170')返回的是5, 按理说应该能触发吧?