SQL viewId 比较好看的 Id
2016-05-18 15:01
591 查看
有时候我们希望 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');
针对某个表写入触发器逻辑
如果表已经存在数据的话,要更新哦
创建column and UNIQUE
使用 Entity Framewrok的话可以把这个数据标签为 Computed.
以上.
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) as begin return ( select @Prefix + RIGHT(REPLICATE(@PaddingChar, @Length) + CAST(@Id as nvarchar(10)), @Length) ) end
针对某个表写入触发器逻辑
drop trigger OrdersAfterInsert; create trigger OrdersAfterInsert on [dbo].[Orders] for insert as 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; } }
以上.
相关文章推荐
- 关系模式候选码
- redis使用详解
- win10下 mysql服务无法启动
- 【T_SQL】基础 续+
- 【T_SQL】基础 续+
- Mysql备份还原数据库之mysqldump实例及参数详细说明
- hibernate.cfg.xml文件连接mySql、Oracle、SqlServer配置
- mysql中char,varchar与text类型的区别和选用
- CentOS64位6.4下Hadoop2.7.1、Mysql5.5.46、Hive1.2.1、Spark1.5.0的集群环境部署
- 【T_SQL】 基础 续
- 【T_SQL】 基础 续
- 启动web容器服务后出现 Xmemcached-Reactor-3错误
- mysql单表体积和一个库设计多少张表为妥
- mysql数据库编码
- mysql I/O调度算法
- 数据库设计三大范式总结
- mysql第一天 基础入门命令
- 图解Oracle dump 命令初步
- 关于图片或者文件在数据库的存储方式归纳
- redis学习中遇到对象的串行化(Serialization)问题