5

我想知道我是否可以创建一个身份(在 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)?

4

3 回答 3

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 关键字...

于 2010-09-03T19:23:05.160 回答
3

不是直接的。

  • 在整数列上使用计算列(根据 OMG Ponies 的回答)
  • 使用 udf ( SO1 , SO2 )

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

于 2010-09-03T19:24:52.970 回答
-1

此代码正在运行

CREATE TABLE IdentityExample(
  ID int IDENTITY NOT NULL, 
  QNo as 'Q'+Cast(ID as Varchar(10)) PERSISTED PRIMARY KEY, 
  name Varchar(200)
)
于 2015-10-17T05:11:23.047 回答