导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

求教 ,触发器 和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,'','')


...全文
46 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过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
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告