insert into [photo] ([uid]) values (@uid)
--@uid是唯一的呀
select *from [photo]where uid=@uid

解决方案 »

  1.   


    没有identity列,uid只是个外键约束
      

  2.   


    +_+ 看错了--2005
    set nocount on
    begin
       dclare @t table([filename] [uniqueidentifier])
       insert into [photo]([uid]) output inserted.filename into @t(filename) selec @uid
       select @filename=filename from @t
        ---此处怎么取得刚插入的数据,主要是[filename]
    end
    GO
      

  3.   

    你可以换一个思路 先生成newid() 再插入
    create procedure [dbo].[photo_upload]
    @uid [int],
    @filename [varchar] (36) output
    AS
    set nocount on
    begin
        set @filename=newid()
        insert into [photo] (filename,[uid]) values (@filename,@uid)
        --能够达到同样的目的,这样不就省事了很多
    end
    GO
      

  4.   

    先生成newid(),不会生成重复的filename吗?
      

  5.   

    guid基本上不会重复的,在同一台server上更不可能重复了..这个大奖概率可太低了
    楼主放心的生成guid再插入吧
    再说,如果生成的guid会重复的话,楼主的default(newid()) 也有可能是重复的
    所以,放心的直接先生成就可以了