博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL viewId 比较好看的 Id
阅读量:7143 次
发布时间:2019-06-29

本文共 1450 字,大约阅读时间需要 4 分钟。

有时候我们希望 Id 要好看一些,比如 Id=1 -> Id=T000001

refer : 

http://www.kodyaz.com/t-sql/custom-sequence-string-as-sql-identity-column.aspx

http://www.sqlteam.com/article/custom-auto-generated-sequences-with-sql-server

 

方法有很多,我目前选择的方式是使用触发器在插入之后更新 

我们把这个好看一点的Id称为 viewId 吧。

先做一个方法来格式化Id

调用 viewId = dbo.getViewId('T',CAST(inserted.Id as nvarchar(50)),6,'0'); 

drop function dbo.getViewId;create function [dbo].[getViewId] ( @Prefix nvarchar(10), @Id int, @Length int, @PaddingChar char(1) = '0')returns nvarchar(MAX)asbeginreturn ( select @Prefix + RIGHT(REPLICATE(@PaddingChar, @Length) + CAST(@Id as nvarchar(10)), @Length))end

 

针对某个表写入触发器逻辑

drop trigger OrdersAfterInsert;create trigger OrdersAfterInsert on [dbo].[Orders] for insertas     update Orders set viewId = dbo.getViewId('O', CAST(inserted.Id as nvarchar(50)),6,'0')         from Orders inner join inserted on Orders.Id= inserted.Id;     go

 

如果表已经存在数据的话,要更新哦

update Orders set viewId = dbo.getViewId('O', CAST(Id as nvarchar(50)),6,'0');

 

创建column and UNIQUE

alter table Orders add viewId nvarchar(50) null;create unique nonclustered index [UNIQUE_Orders_viewId]    on [dbo].[Orders]([viewId] asc) where ([viewId] IS NOT NULL AND [viewId] IS NOT NULL);

 

使用 Entity Framewrok的话可以把这个数据标签为 Computed.

public class Order{    [Key]    public int Id { get; set; }    [DatabaseGenerated(DatabaseGeneratedOption.Computed)]    public string viewId { get; set; }} 

 

以上.

 

转载于:https://www.cnblogs.com/keatkeat/p/5505318.html

你可能感兴趣的文章
控制input输入格式
查看>>
linux系统上安装java
查看>>
38.进程管理与计划任务---PS、Top、Crontab
查看>>
0301_互连模拟
查看>>
一次XEN启动中的错误捕获
查看>>
重大里程碑:顶级科学家达成23条人工智能发展原则!
查看>>
esxi嵌套华为Fusioncomputer安装VRM几个关键步骤。
查看>>
/etc/init.d/mysqld:line 260:my_print_defaults:command not found
查看>>
DNS设置引起的登录延迟
查看>>
*** $CI =& get_instance() 用法:关于CodeIgniter中get_instance() 函数
查看>>
简单的ISIS协议的路由重分发实验详解
查看>>
Python模块学习--shutil和hashlib和json
查看>>
Linux防火墙iptables学习笔记(一)入门要领
查看>>
xshell 秘钥配对
查看>>
saltstack之SLS文件
查看>>
Redhat linux下cvs的安装配置
查看>>
cxgrid合并值相同的某列
查看>>
增量备份和差异备份的区别
查看>>
纯JS操作获取桌面路径方法
查看>>
thinkphp数据库添加表单提交的数据
查看>>