2009-10-14 5 views
2

Je veux créer un DB, où le PK de chaque table sera GUID et qui sera unique à travers le DB,SQL Server comment maintenir GUID sur les tables dans la même DB

Exemple: mon nom de DB est « LIEU » . Et j'ai 3 table comme 'VILLE', 'ÉTAT' et 'PAYS'. Je veux que toutes les 3 tables aient le même champ PK que le GUID, et que cette valeur soit unique à travers DB.

Comment faire cela dans SQL Server, une idée? Je n'ai jamais utilisé SQL Server auparavant, il sera donc utile s'il est brièvement expliqué.

Répondre

4
create table CITY (
    ID uniqueidentifier not null primary key default newid(), 
    . 
    . 
    . 
) 

Répétez l'opération pour les autres tables.

3

Que voulez-vous dire exactement? Créez simplement la table, ajoutez un champ Id à chaque table, définissez le type de données du champ Id sur 'uniqueidentifier', et vous êtes prêt à partir. Ensuite, ajoutez une contrainte principale sur ces colonnes et assurez-vous que lors de l'insertion d'un nouvel enregistrement, vous affectez un nouveau guid à cette colonne (par exemple, en utilisant la fonction newid()).

0

Je ne vois pas de bonne raison d'avoir un nombre unique partagé par 3 tables, pourquoi ne pas donner à chaque table un index unique avec une référence de clé étrangère? Les champs indexés sont interrogés plus rapidement que les nombres aléatoires.

Je voudrais créer une table 'Location' avec des clés étrangères CityId, StateId & CountryId pour les lier logiquement.

éditer: Si vous ajoutez un identifiant unique à travers les tables City, State et Country, pourquoi ne pas les avoir comme champs dans la même table? J'aurais pensé que votre raison pour les diviser en 3 tables était de réduire la duplication dans la base de données.

Questions connexes