计算的hashybtes列用作主键

时间:2013-10-08 01:21:46

标签: tsql md5 calculated-columns

我有很长的基因序列可能是天然的主键,但我正在寻找一种方法来找到更简洁的自然键的替代表示。不想使用代理键。不担心性能,因为不会有很多连接担心PK的效率问题在哪里。

这可能吗?

        create table foo(
           myvalue varchar(2000) not null,
           md5 as hashbytes('MD5',myvalue) PERSISTED   PRIMARY KEY  NOT NULL   -- bad syntax
         )

如果是这样,那么正确的语法是什么?以上是不正确的。

我也可以创建子表并建立FK关系吗?我没有在文档中找到限制部分:

          create table fooChild(
          id int primary key not null,
          md5 varbinary(16)
           )

         alter table fooChild add constraint FK_FOOCHILD_FOO
         foreign key(md5) references FOO(md5)

1 个答案:

答案 0 :(得分:0)

这是答案。 http://www.devx.com/tips/Tip/15397

基本上你必须确保一个函数不能返回null,所以在isnull或coalesce中包装hashbytes。