varchar列上的标识键 - T-SQL

时间:2010-09-03 19:18:54

标签: sql sql-server tsql sql-server-2008 calculated-columns

我想知道我是否可以创建一个Identity(在Varchar列上自动增加。如何将其作为主键并在其他表上创建外键引用。

这是我的代码 -

CREATE TABLE Questions(
    QuestionID int IDENTITY PRIMARY KEY, 
    QuestionNo as 'Q'+Cast(QuestionID as Varchar(10),       
    Question Varchar(200)
)

有没有办法可以将QuestionNo作为主键并在另一个表中引用它(比如Answers(AnswerID,QuestionNo,AnswerText)?

3 个答案:

答案 0 :(得分:9)

这在SQL Server 2005上对我有用:

CREATE TABLE Questions(
  QuestionID int IDENTITY NOT NULL, 
  QuestionNo as 'Q'+Cast(QuestionID as Varchar(10)) PERSISTED PRIMARY KEY, 
  Question Varchar(200)
)

主要部分是计算列需要PERSISTED关键字......

答案 1 :(得分:3)

不直接。

  • 在整数列上使用计算列(根据OMG Ponies的答案)
  • 使用udf(SO1SO2

我的问题是:为什么?它会比简单的数字慢。

答案 2 :(得分:-1)

此代码正常运行

CREATE TABLE IdentityExample(
  ID int IDENTITY NOT NULL, 
  QNo as 'Q'+Cast(ID as Varchar(10)) PERSISTED PRIMARY KEY, 
  name Varchar(200)
)