Identität-Taste auf varchar-Spalte - T-SQL
Möchte ich wissen, wenn ich erstellen Sie eine Identität (auto-Inkrement, die auf eine Varchar-Spalte. und wie kann ich es machen das ein Primärschlüssel und Fremdschlüssel erstellen Referenzen auf eine andere Tabelle.
Dies ist der code, den ich habe -
CREATE TABLE Questions(
QuestionID int IDENTITY PRIMARY KEY,
QuestionNo as 'Q'+Cast(QuestionID as Varchar(10),
Question Varchar(200)
)
Gibt es eine Möglichkeit, die ich machen kann QuestionNo als Primary key und verweisen Sie in eine andere Tabelle (sagen, Antworten (AnswerID, QuestionNo, AnswerText)?
dies ist ein schlechtes design, tun Sie es nicht! Sie können jederzeit die Anzeige (in der Anwendung) ist der numerische Wert mit einer "F" - Präfix, aber speichern Sie es als pure int, FK zu den int. Wenn Sie möchten, können Sie FK auf zwei clumns, die int-und eine char(1) Art. es gibt keine Notwendigkeit, um es zu speichern als varchar. Ich Kämpfe mit dem alten code, hat dieselbe verrückte Konzept in es, macht alles ein hack, du wirst eventully code wie
Ja.Ich bekomme Ihren Punkt. Danke.
Vereinbart. Ich hatte ein system, das hatte ein setup ähnlich wie diese - Sie wollten die zahlen, ein paar Buchstaben, die in der Datensatz-Nummer... Es wurde besser, wenn Sie die ersten Schritte mit dem system, und wollte die Suche aktualisiert, so dass es ignoriert die führenden Buchstaben...
IF LEFT(...,1)='Q'... ELSE IF LEFT(...,1)='A'...
oder ähnliche CASE
Aussagen...Ja.Ich bekomme Ihren Punkt. Danke.
Vereinbart. Ich hatte ein system, das hatte ein setup ähnlich wie diese - Sie wollten die zahlen, ein paar Buchstaben, die in der Datensatz-Nummer... Es wurde besser, wenn Sie die ersten Schritte mit dem system, und wollte die Suche aktualisiert, so dass es ignoriert die führenden Buchstaben...
InformationsquelleAutor Abey | 2010-09-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser arbeitete für mich auf SQL Server 2005:
Den wichtigsten Teil ist, dass Sie eine berechnete Spalte muss die BEIBEHALTENE Stichwort...
Aber wie würden Sie finden diese in einer anderen Tabelle als foreign key? Ich bekomme Fehler aus dieser TABELLE ERSTELLEN Antworten(int AnswerID IDENTITY PRIMARY KEY, QuestionNo Varchar(10), Antwort vom Datentyp nvarchar(200), Foreign key (QuestionNo) Referenzen Fragen(QuestionNo))
Sie erhalten eine Fehlermeldung, da die Länge der
questionno
ist vom Datentyp VARCHAR(10) in derANSWERS
Tabelle, aber es ist vom Datentyp VARCHAR(11) inQUESTIONS
- sobald das korrigiert, funktioniert es für mich. Aber ich Stimme mitgbn
- würde ich nicht machenquestionno
der primäre Schlüssel für Geschwindigkeit & Wahrscheinlichkeit von format sich in der Zukunft ändern.InformationsquelleAutor OMG Ponies
Nicht direkt.
Meine Frage ist: warum? es wird langsamer sein als eine einfache Zahl.
InformationsquelleAutor gbn
dieser code funktioniert
InformationsquelleAutor Ashokreddy