2017-05-15 3 views
0

Je ne suis pas entièrement sûr de ce qu'il faut rechercher, donc je m'excuse si c'est en fait un doublon.Incrémentation automatique avec clé primaire composite

J'ai une table (ou au moins voudrait) comme suit:

  • ID
  • Nom de la société
  • SomeOtherInfo

La clé primaire serait ID et Company name (clé primaire composite). Ce que je voudrais, c'est que l'ID automatique s'incrémente dans chaque entreprise.

Ex:

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

De cette façon, ils sont toujours uniques, mais chacun par incréments pour chaque entreprise individuellement.

Est-ce possible à partir de simples commandes de création SQL, préférez ne pas avoir 2 tables et les joindre en utilisant un ID secondaire. Faites-moi savoir, merci.

+1

qui va dépendre fortement ** ** ** sur lequel le système de base de données de béton ** que vous utilisez. ** SQL ** car le langage de requête n'a pas cette fonctionnalité - mais peut-être que certaines extensions spécifiques à un fournisseur offriraient quelque chose comme ça. S'il vous plaît ajouter un tag pertinent comme 'oracle',' postgresql', 'mysql',' sql-server', 'db2' ou tout ce que vous pourriez utiliser à votre poste! –

+0

SQL standard a IDENTITY et SEQUENCE qui sont toutes les deux des fonctionnalités de générateur de séquence automatique. Les mots-clés standard IDENTITY et SEQUENCE sont pris en charge par la plupart des SGBD, mais MySQL utilise AUTO_INCREMENT au lieu de IDENTITY et n'a pas d'équivalent de SEQUENCE. – sqlvogel

Répondre

0

Si je suis la question. Créez une seule table avec une identité dans la colonne ID. Ensuite, créez un index unique sur le nom de l'entreprise.

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

Pas vraiment sûr de ce que cela signifie, ou comment le faire. Assez vague ... – Lain

+0

CompanyID est une manière de référencer le record. Une combinaison de CompanyName et SomeOtherInfo doit être unique pour éviter la création d'enregistrements en double. Cela suppose que je comprends ce que l'OP demande ..... –

+0

Je cherchais un exemple pour voir s'il était possible de faire ce genre de chose dans mysql: http://stackoverflow.com/a/6383117/3339122 où Je ne fais qu'insérer le nom de l'entreprise, et les autres informations et les identifiants augmentent d'une unité pour chaque entreprise (comme dans l'exemple qu'il a donné) – Lain