求教 ,触发器 和newid()问题

huruihappy 2007-12-05 06:38:33
我通过一张表unique_index_forAll 用newid()的方式产生一个唯一标志(uniqueidentifier类型),然后做个触发器,当插入unique_index_forAll,会产生一个唯一标志。然后将这个标志取出 存在另外一张表GZL_LY_MB中 产生一个字符串唯一标志做为主键使用。
但是我这样做的话 开头3行 可以正确触发事件,2张表中都正确生成了主键唯一标志,但是多插入几行后 会提示PK_GZL_LY_MB有重复的错误 不知道该怎么解决。希望高手赐教

由于在外部程序中uniqueidentifier不能被识别为字符串,只有将他在sqlserver中转换为字符串存储,

触发器如下:
--产生唯一的标志
CREATE TRIGGER create_unique ON [dbo].[unique_index_forAll]
FOR INSERT
AS
declare @unique_index char(60)
select @unique_index = uniqueIndex from unique_index_forAll
insert into GZL_LY_MB values(@unique_index,'','')


...全文
92 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2007-12-05
  • 打赏
  • 举报
回复
既然唯一,不如用自增列,何必这么麻烦.
中国风 2007-12-05
  • 打赏
  • 举报
回复
--存储过程
create proc Test(@ID uniqueidentifier output,@Name nvarchar(50))
as
set @ID=newID()
insert Test values(@ID,@Name)

go
declare @ID uniqueidentifier
exec Test ID output,@Name

insert T2 values(@ID)

dobear_0922 2007-12-05
  • 打赏
  • 举报
回复
CREATE   TRIGGER     create_unique   ON   [dbo].[unique_index_forAll]   
FOR INSERT
AS
begin
insert into GZL_LY_MB select uniqueIndex,'','' from inserted
end

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧