2017-05-15 5 views
0

Ich bin nicht ganz sicher, was zu suchen, also entschuldige ich mich, wenn dies in der Tat ein Duplikat ist.Auto-Inkrement mit Composite-Primärschlüssel

Ich habe eine Tabelle (oder zumindest möchte) wie folgt:

  • ID
  • Firmenname
  • SomeOtherInfo

Der Primärschlüssel wäre ID und Company name (zusammengesetzter Primärschlüssel). Was ich möchte ist, dass die ID automatisch für jedes Unternehmen erhöht wird.

Ex:

1-google 
2-google 
3-google 
1-yahoo 
4-google 
2-yahoo 

So können sie immer einzigartig sind, aber jeder Schritten für jeden einzeln Unternehmen.

Ist dies aus einfachen SQL-Befehlserstellung möglich, würde lieber nicht 2 Tabellen haben und sie mit einer sekundären ID verbinden.

Lassen Sie mich wissen, danke.

+1

thatll ** stark davon abhängen, **, auf dem ** Beton ** Datenbanksystem Sie verwenden. ** SQL ** als Abfragesprache hat keine solche Funktion - aber vielleicht bieten einige herstellerspezifische Erweiterungen so etwas an. Bitte fügen Sie ein relevantes Tag hinzu wie 'oracle',' postgresql', 'mysql',' sql-server', 'db2' oder was auch immer Sie sonst noch zu Ihrem Beitrag benutzen! –

+0

Standard-SQL hat IDENTITY und SEQUENCE, die beide automatische Sequenzgenerator-Funktionen sind. Die Standardschlüsselworte IDENTITY und SEQUENCE werden von den meisten DBMS unterstützt, aber MySQL verwendet AUTO_INCREMENT statt IDENTITY und hat kein Äquivalent von SEQUENCE. – sqlvogel

Antwort

0

Wenn ich die Frage befolge. Erstellen Sie eine einzelne Tabelle mit einer Identität in der ID-Spalte. Erstellen Sie dann einen eindeutigen Index für den Firmennamen.

MySql Version
CREATE TABLE Company (
    CompanyID int NOT NULL AUTO_INCREMENT, 
    CompanyName varchar(255) NOT NULL, 
    OtherData varchar(255), 
    PRIMARY KEY (CompanyID) 
); 

CREATE UNIQUE INDEX CompanyUniqueComposite 
ON Company (CompanyID , CompanyName); 
+0

Nicht wirklich sicher, was das bedeutet oder wie dies zu tun ist. Ganz vage ... – Lain

+0

CompanyID ist eine Möglichkeit, den Datensatz zu referenzieren. Eine Kombination aus CompanyName und SomeOtherInfo muss eindeutig sein, um das Erstellen doppelter Datensätze zu verhindern. Dies setzt voraus, dass ich verstehe, was das OP fragt ..... –

+0

Ich suchte nach einem Beispiel, um zu sehen, ob es möglich ist, so etwas in mysql zu tun: http://StackOverflow.com/a/6383117/3339122 wo Ich füge einfach den Firmennamen ein, und andere Informationen und die ID werden für jede Firma um eins erhöht (wie in dem Beispiel, das er gab) – Lain