48 votes

Comment créer une relation de clé étrangère dans une base de données SQL Server CE (Compact Edition) ?

Visual Studio ne fournit pas d'interface pour créer des relations entre les tables dans une base de données SQL Server CE (j'utilise la version 3.0) et vous ne pouvez pas ouvrir une base de données Compact Edition en utilisant Management Studio pour autant que je sache. Avez-vous des idées ?

70voto

Espo Points 24318

Malheureusement, il n'y a actuellement aucun support pour le concepteur (contrairement à SQL Server 2005) pour construire des relations entre les tables dans SQL Server CE. Pour établir des relations, vous devez utiliser des commandes SQL telles que :

ALTER TABLE Orders
ADD CONSTRAINT FK_Customer_Order
FOREIGN KEY (CustomerId) REFERENCES Customers(CustomerId)

Si vous faites du développement CE, je vous recommande cette FAQ :

EDIT : Dans Visual Studio 2008, il est désormais possible de le faire dans l'interface graphique en cliquant avec le bouton droit de la souris sur votre tableau.

2 votes

Je crois qu'il vous manque le mot-clé CONSTRAINT. Au moins dans SQL Server CE 3.5... ALTER TABLE Orders ADD CONSTRAINT FK_Customer_Order FOREIGN KEY (CustomerId) REFERENCES Customers(CustomerId)

44voto

Visual Studio 2008 fait ont un concepteur qui vous permet d'ajouter des FK. Il suffit de faire un clic droit sur la table... Propriétés de la table, puis allez dans la section "Ajouter des relations".

HTH

0 votes

Je crois bien que j'utilisais VS 2005 lorsque j'ai eu ce problème. Je suis heureux de savoir que vous pouvez le faire à travers l'interface utilisateur dans VS 2008 maintenant !

7voto

Ryan Shripat Points 2330

Vous devez créer une requête (dans Visual Studio, cliquez avec le bouton droit de la souris sur la connexion DB -> New Query) et exécuter le SQL suivant :

ALTER TABLE tblAlpha
ADD CONSTRAINT MyConstraint FOREIGN KEY (FK_id) REFERENCES
tblGamma(GammaID)
ON UPDATE CASCADE

Pour vérifier que votre clé étrangère a été créée, exécutez le SQL suivant :

SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS

Crédit à E Jensen ( http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=532377&SiteID=1 )

3voto

Rob Points 41

Alan a raison quand il dit qu'il y a un soutien des designers. Rhywun est incorrect lorsqu'il laisse entendre que vous ne pouvez pas choisir la table de la clé étrangère. Ce qu'il veut dire, c'est que dans l'interface utilisateur, le menu déroulant de la table de clé étrangère est grisé - ce qui signifie qu'il n'a pas cliqué avec le bouton droit de la souris sur la bonne table pour y ajouter la clé étrangère.

En résumé, cliquez avec le bouton droit de la souris sur la table de clé étrangère, puis sélectionnez la table de clé primaire correspondante via l'option 'Propriétés de la table' > 'Ajouter des relations'.

Je l'ai fait de nombreuses fois et ça marche.

1voto

create table employee
(
   empid int,
   empname varchar(40),
   designation varchar(30),
   hiredate datetime, 
   Bsalary int,
   depno constraint emp_m foreign key references department(depno)
)

Nous devons avoir une clé primaire pour créer une clé étrangère ou une relation entre deux ou plusieurs tables.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X