Foxtable(狐表)用户栏目专家坐堂 → [求助]sql触发器


  共有5215人关注过本帖树形打印复制链接

主题:[求助]sql触发器

帅哥哟,离线,有人找我吗?
2425004926
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:712 积分:5553 威望:0 精华:0 注册:2019/11/14 9:36:00
[求助]sql触发器  发帖心情 Post By:2022/7/13 11:58:00 [只看该作者]

我想要达到的效果是,sqlserver数据库,增加一行,ComNumber这一列的值就自动生成
比如,主键是1234,那么fx列就是DW00001234,
再比如,主键是12,那么fx列就是DW00000012
也就是DW后面8个数字

ComNumber 这一列数据类型nvarchar(10) 狐表设置固定长度字符串为10


以下是sqlserver触发器语代码

USE [Exhibition]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[Fill_No]ON [dbo].[UserCom]
AFTER INSERT
AS
BEGIN
UP DATE UserCom SET El = 'DW'+str(_Identify) ‘是ok的,中间有空格,比如变成DW      234
UP DATE UserCom SET ComNumber = 'DW'+REPLICATE('0',8-LEN(STR(_Identify)))+STR(_Identify) ’这一单元格值还为空
END

最后一行蓝色代码应该怎么改,老师指点一下,谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109489 积分:557107 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/7/13 13:15:00 [只看该作者]

 UP DATE UserCom SET ComNumber = 'DW'+REPLICATE('0',8-LEN(cast([_Identify] as nvarchar(10))))+cast([_Identify] as nvarchar(10))

 回到顶部
帅哥哟,离线,有人找我吗?
2425004926
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:712 积分:5553 威望:0 精华:0 注册:2019/11/14 9:36:00
  发帖心情 Post By:2022/7/13 15:17:00 [只看该作者]

 谢谢老师!OK

 UP DATE UserCom SET ComNumber = 'DW'+REPLICATE('0',8-LEN(cast([_Identify] as nvarchar(10))))+cast([_Identify] as nvarchar(10))
更新了表里这一列所有的数据,如果只更新所增加的这一行,又该怎么改呢?
我sql语句实在是太菜,但用的功能极少,也没有仔细研究这一块,望老师再指点一下!!!

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109489 积分:557107 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/7/13 15:36:00 [只看该作者]

https://www.baidu.com/baidu?ie=UTF-8&word=SqlServer%20%E8%A7%A6%E5%8F%91%E5%99%A8%20%E8%8E%B7%E5%8F%96%E6%96%B0%E5%A2%9E%E8%A1%8C

UP DATE UserCom SET ComNumber = 'DW'+REPLICATE('0',8-LEN(cast([_Identify] as nvarchar(10))))+cast([_Identify] as nvarchar(10)) where [_Identify] = Inserted.[_Identify]

 回到顶部
帅哥哟,离线,有人找我吗?
2425004926
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:712 积分:5553 威望:0 精华:0 注册:2019/11/14 9:36:00
  发帖心情 Post By:2022/7/13 16:25:00 [只看该作者]

用这个where [_Identify] = Inserted.[_Identify] 显示其它行代码没有通过,
我改了一下,where ComNumber Is Null 因为新增行这里肯定是空,OK
UP DATE UserCom SET ComNumber = 'DW'+REPLICATE('0',8-LEN(cast([_Identify] as nvarchar(10))))+cast([_Identify] as nvarchar(10)) where ComNumber Is Null
感谢老师!感谢!!感谢!!!

 回到顶部