Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Identity key on varchar column - T-SQL

I want to know if I can create an Identity (auto increment on a Varchar column. and how can I make it a primary key and create foreign key references on other table.

This is the code i have -

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

Is there a way I can make QuestionNo as Primary key and reference it in another table (say Answers (AnswerID, QuestionNo, AnswerText)?

like image 376
Abey Avatar asked Sep 03 '10 19:09

Abey


2 Answers

This worked for me on 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)
)

The main part is that a computed column needs the PERSISTED keyword...

like image 200
OMG Ponies Avatar answered Nov 01 '22 17:11

OMG Ponies


Not directly.

  • use a computed column on an integer column (as per OMG Ponies answer)
  • use a udf (SO1, SO2)

My question is: why? it will be slower than a straightforward number.

like image 40
gbn Avatar answered Nov 01 '22 18:11

gbn