Sous SQL Serveur 2000, est-il possible de d=E9finir 2 FK sur=20
un m=EAme champs de type int.
Sachant que la premi=E8re FK pointe vers une table et=20
qu'elle doit =EAtre active seulement pour une certaine plage=20
de valeurs (par ex entre 1 et 10) et que la deuxi=E8me FK=20
pointe vers une deuxi=E8me table dont la PK est d=E9finie sur=20
une autre plage de valeurs (11 =E0 20)
exemple :
=20
create table T_REF1 (idref int identity (1,1))
create table T_REF2 (idref int identity (10,1))
create table T_LIENS ( Idref int)
Jusqu'ici ces deux contraintes sont cr=E9=E9es sans erreurs.
Mais si j'inser=E8re des valeurs dans T_LIENS, j'ai un=20
message d'erreur.=20
Est-ce possible de mettre des conditions de jointures?=20
Pour dire active le lien sur T_REF1 si idref est compris=20
entre 1 et 10 et active l'autre FK si idref compris entre=20
11 et 20.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fred BROUARD
non... En SQL "pur" on pourrait jouer sur la déférabilité des contraintes mais elle n'est pas implémentée sous SQL Server.
En revanche c'est possible via trigger.
A +
SSO a écrit:
Bonjour,
Sous SQL Serveur 2000, est-il possible de définir 2 FK sur un même champs de type int. Sachant que la première FK pointe vers une table et qu'elle doit être active seulement pour une certaine plage de valeurs (par ex entre 1 et 10) et que la deuxième FK pointe vers une deuxième table dont la PK est définie sur une autre plage de valeurs (11 à 20)
exemple :
create table T_REF1 (idref int identity (1,1)) create table T_REF2 (idref int identity (10,1)) create table T_LIENS ( Idref int)
Jusqu'ici ces deux contraintes sont créées sans erreurs. Mais si j'inserère des valeurs dans T_LIENS, j'ai un message d'erreur. Est-ce possible de mettre des conditions de jointures? Pour dire active le lien sur T_REF1 si idref est compris entre 1 et 10 et active l'autre FK si idref compris entre 11 et 20.
Merci d'avance
-- Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
non...
En SQL "pur" on pourrait jouer sur la déférabilité des contraintes mais elle n'est pas implémentée sous SQL Server.
En revanche c'est possible via trigger.
A +
SSO a écrit:
Bonjour,
Sous SQL Serveur 2000, est-il possible de définir 2 FK sur
un même champs de type int.
Sachant que la première FK pointe vers une table et
qu'elle doit être active seulement pour une certaine plage
de valeurs (par ex entre 1 et 10) et que la deuxième FK
pointe vers une deuxième table dont la PK est définie sur
une autre plage de valeurs (11 à 20)
exemple :
create table T_REF1 (idref int identity (1,1))
create table T_REF2 (idref int identity (10,1))
create table T_LIENS ( Idref int)
Jusqu'ici ces deux contraintes sont créées sans erreurs.
Mais si j'inserère des valeurs dans T_LIENS, j'ai un
message d'erreur.
Est-ce possible de mettre des conditions de jointures?
Pour dire active le lien sur T_REF1 si idref est compris
entre 1 et 10 et active l'autre FK si idref compris entre
11 et 20.
Merci d'avance
--
Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
non... En SQL "pur" on pourrait jouer sur la déférabilité des contraintes mais elle n'est pas implémentée sous SQL Server.
En revanche c'est possible via trigger.
A +
SSO a écrit:
Bonjour,
Sous SQL Serveur 2000, est-il possible de définir 2 FK sur un même champs de type int. Sachant que la première FK pointe vers une table et qu'elle doit être active seulement pour une certaine plage de valeurs (par ex entre 1 et 10) et que la deuxième FK pointe vers une deuxième table dont la PK est définie sur une autre plage de valeurs (11 à 20)
exemple :
create table T_REF1 (idref int identity (1,1)) create table T_REF2 (idref int identity (10,1)) create table T_LIENS ( Idref int)
Jusqu'ici ces deux contraintes sont créées sans erreurs. Mais si j'inserère des valeurs dans T_LIENS, j'ai un message d'erreur. Est-ce possible de mettre des conditions de jointures? Pour dire active le lien sur T_REF1 si idref est compris entre 1 et 10 et active l'autre FK si idref compris entre 11 et 20.
Merci d'avance
-- Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
Fred BROUARD
non... En SQL "pur" on pourrait jouer sur la déférabilité des contraintes mais elle n'est pas implémentée sous SQL Server.
En revanche c'est possible via trigger.
A +
SSO a écrit:
Bonjour,
Sous SQL Serveur 2000, est-il possible de définir 2 FK sur un même champs de type int. Sachant que la première FK pointe vers une table et qu'elle doit être active seulement pour une certaine plage de valeurs (par ex entre 1 et 10) et que la deuxième FK pointe vers une deuxième table dont la PK est définie sur une autre plage de valeurs (11 à 20)
exemple :
create table T_REF1 (idref int identity (1,1)) create table T_REF2 (idref int identity (10,1)) create table T_LIENS ( Idref int)
Jusqu'ici ces deux contraintes sont créées sans erreurs. Mais si j'inserère des valeurs dans T_LIENS, j'ai un message d'erreur. Est-ce possible de mettre des conditions de jointures? Pour dire active le lien sur T_REF1 si idref est compris entre 1 et 10 et active l'autre FK si idref compris entre 11 et 20.
Merci d'avance
-- Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
non...
En SQL "pur" on pourrait jouer sur la déférabilité des contraintes mais elle n'est pas implémentée sous SQL Server.
En revanche c'est possible via trigger.
A +
SSO a écrit:
Bonjour,
Sous SQL Serveur 2000, est-il possible de définir 2 FK sur
un même champs de type int.
Sachant que la première FK pointe vers une table et
qu'elle doit être active seulement pour une certaine plage
de valeurs (par ex entre 1 et 10) et que la deuxième FK
pointe vers une deuxième table dont la PK est définie sur
une autre plage de valeurs (11 à 20)
exemple :
create table T_REF1 (idref int identity (1,1))
create table T_REF2 (idref int identity (10,1))
create table T_LIENS ( Idref int)
Jusqu'ici ces deux contraintes sont créées sans erreurs.
Mais si j'inserère des valeurs dans T_LIENS, j'ai un
message d'erreur.
Est-ce possible de mettre des conditions de jointures?
Pour dire active le lien sur T_REF1 si idref est compris
entre 1 et 10 et active l'autre FK si idref compris entre
11 et 20.
Merci d'avance
--
Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
non... En SQL "pur" on pourrait jouer sur la déférabilité des contraintes mais elle n'est pas implémentée sous SQL Server.
En revanche c'est possible via trigger.
A +
SSO a écrit:
Bonjour,
Sous SQL Serveur 2000, est-il possible de définir 2 FK sur un même champs de type int. Sachant que la première FK pointe vers une table et qu'elle doit être active seulement pour une certaine plage de valeurs (par ex entre 1 et 10) et que la deuxième FK pointe vers une deuxième table dont la PK est définie sur une autre plage de valeurs (11 à 20)
exemple :
create table T_REF1 (idref int identity (1,1)) create table T_REF2 (idref int identity (10,1)) create table T_LIENS ( Idref int)
Jusqu'ici ces deux contraintes sont créées sans erreurs. Mais si j'inserère des valeurs dans T_LIENS, j'ai un message d'erreur. Est-ce possible de mettre des conditions de jointures? Pour dire active le lien sur T_REF1 si idref est compris entre 1 et 10 et active l'autre FK si idref compris entre 11 et 20.
Merci d'avance
-- Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************