表中有FileName, UserName , FileId 三项
往表中插入FileName, UserName
一个FileName对应多个Usrname,想实现FileId的自增长,如下:
FileName  UserName   FileId
a         1          1
a         2          1
a         3          1
b         2          2
b         3          2
c         2          3我写了下面的触发器,显示语法错误,能告诉我下错在哪或有什么更好的解决办法么?CREATE TRIGGER `AddFileId` AFTER INSERT ON `userinformation`
FOR EACH ROW 
as
begin
declare @NewId int,@i int,@NewFileName char(255)
select @NewFileName=Inserted.FlieName from Inserted
select @NewId=Inserted.Id from Inserted
if exists(select * from UserInformation where FileName=@NewFileName)
   begin
         select @i=select FileId form UserInformation where FileName=@NewFileName;
         update UserInformation
         set UserInformation.FileId=@i where UserInformation.Id=NewId;
    end
else
     begin
         select @i=MAX(FileId) FROM UserInformation;
         set  @i=@i+i
         update UserInformation
         set UserInformation.FileId=@i where UserInformation.Id=NewId
     end
end
第一次写触发器,实在没经验,谢谢帮忙了

解决方案 »

  1.   

    这个,难道不能用两张表来描述?
    一张是fieldname, fieldid  (fieldid设为自增长即可)
    另一张是fieldid,  username
      

  2.   

     FileId可以用查询解决你的语法是SQLSERVER的
    select @NewFileName=Inserted.FlieName from Inserted MYSQL没有Inserted表
     select @NewId=Inserted.Id from Inserted if exists(select * from UserInformation where FileName=@NewFileName) then ...
      

  3.   

    MYSQL中触发器不能对本表进行UPDATE,DELETE,INSERT操作。
      

  4.   

    我表中FileName和UserName是直接从excel文件里导进去的, 拆成两个表没法导进去了 请问在mysql里怎么解决这个问题呢
      

  5.   

    自己写sql更新咯。
      

  6.   

    FileId可以用查询解决,为什么要用TRIGGER?
      

  7.   

    SET @a=0;
    SET @b='';
    SELECT *,@a:=IF(@b=FileName ,@a,@a+1),@b:=FileName  FROM tt
      

  8.   

    我想在每次插入一个数据后给FileId赋值,mysql里没有什么好办法么?
      

  9.   

    请问是把这个
    SET @a=0;
    SET @b='';
    SELECT *,@a:=IF(@b=FileName ,@a,@a+1),@b:=FileName  FROM tt
    放到触发器了么?
    没作用呀