OVH Cloud OVH Cloud

clé primaire à null

7 réponses
Avatar
Mic
Bonjour,

je souhaiterais créer une table avec la possibilité d'avoir une clé primaire
a null. Ma table se décompose ainsi :

Val_obj_id =>pk
val_prop_id =>pk
val_date_deleted => pk
val_values

mon pb est que le champs val_date_deleted peut etre null or sql server le
refuse. sous d'autre sgbd cela marche (mysql par exemple). Y a t'il une
propriéte a modifier sur le serveur pour que les clés primaire null soit pris
en compte ?

par avance merci de votre aide

Mic79

7 réponses

Avatar
Faust
le principe d'une clé primaire est de pouvoir identifier de manière
unique n'importe quel enregistrement
donc au mieux tu ne pourrais avoir qu'un seul enregistrement avec ta
valeur date_deleted à null

Bonjour,

je souhaiterais créer une table avec la possibilité d'avoir une clé
primaire a null. Ma table se décompose ainsi :

Val_obj_id =>pk
val_prop_id =>pk
val_date_deleted => pk
val_values

mon pb est que le champs val_date_deleted peut etre null or sql server le
refuse. sous d'autre sgbd cela marche (mysql par exemple). Y a t'il une
propriéte a modifier sur le serveur pour que les clés primaire null soit
pris en compte ?

par avance merci de votre aide

Mic79



--
Mephitiquement votre,
Faust
ICQ #161252577
Avatar
Mic
oui je connait le but de la clé primaire. Dans mon cas précit, le champ
val_date_deleted qui fait partit de la clé primaire et soit renseigner ou
pas. sous mysql cela tourne or la migration sous sql server n'est pas si
facile que çà...


"Faust" wrote:

le principe d'une clé primaire est de pouvoir identifier de manière
unique n'importe quel enregistrement
donc au mieux tu ne pourrais avoir qu'un seul enregistrement avec ta
valeur date_deleted à null

> Bonjour,
>
> je souhaiterais créer une table avec la possibilité d'avoir une clé
> primaire a null. Ma table se décompose ainsi :
>
> Val_obj_id =>pk
> val_prop_id =>pk
> val_date_deleted => pk
> val_values
>
> mon pb est que le champs val_date_deleted peut etre null or sql server le
> refuse. sous d'autre sgbd cela marche (mysql par exemple). Y a t'il une
> propriéte a modifier sur le serveur pour que les clés primaire null soit
> pris en compte ?
>
> par avance merci de votre aide
>
> Mic79

--
Mephitiquement votre,
Faust
ICQ #161252577




Avatar
Faust
ah oki, j'avais pas compris que le champ faisait partie de la clé
primaire. Je croyais qu'il était clé primaire à part entière.

Ceci dit, ça ne change pas grand chose, c'est difficile de concevoir
qu'une "non-valeur" puisse servir de référence à un enregistrement.

en gros, si tu veux l'inclure dans ta clé primaire, je suppose que
c'est parce que tu va avoir une ligne obj_id, prop_id dupliquée l'une
avec une date_deleted et l'autre sans?
Si c'est le cas, malheureusement, je ne vois que la solution d'avoir un
champ type "boolean" (integer, smallint, ou autre) qui va dire si le
champ date_deleted est renseigné (1, true, 'Y', ou autre) ou non (0,
false, 'N', ou autre) et inclure ce champ dans ta clé primaire

si tu n'as pas de duplication de ligne obj_id, prop_id alors il y'a une
erreur dans la conception de ta base puisque le champ date_deleted ne
doit pas faire partie de ta clé primaire

oui je connait le but de la clé primaire. Dans mon cas précit, le champ
val_date_deleted qui fait partit de la clé primaire et soit renseigner ou
pas. sous mysql cela tourne or la migration sous sql server n'est pas si
facile que çà ...

"Faust" wrote:

le principe d'une clé primaire est de pouvoir identifier de manière
unique n'importe quel enregistrement
donc au mieux tu ne pourrais avoir qu'un seul enregistrement avec ta
valeur date_deleted à null

Bonjour,

je souhaiterais cr�©er une table avec la possibilit�© d'avoir une
cl�© primaire a null. Ma table se d�©compose ainsi :

Val_obj_id =>pk
val_prop_id =>pk
val_date_deleted => pk
val_values

mon pb est que le champs val_date_deleted peut etre null or sql server le
refuse. sous d'autre sgbd cela marche (mysql par exemple). Y a t'il une
propri�©te a modifier sur le serveur pour que les cl�©s primaire null
soit pris en compte ?

par avance merci de votre aide

Mic79



--
Mephitiquement votre,
Faust
ICQ #161252577






--
Mephitiquement votre,
Faust
ICQ #161252577
Avatar
Mic
ouais je c que c difficile de concevoir q'une valeur null peut etre clé
primaire et tu as vu juste y a bien une duplication des cles obj_id et
prop_id. j'y ai penser au truc du booleen mais bon j'aurais préféré une ptite
modif dans la config du serveur pour que ça marche

merci comme meme

"Faust" wrote:

ah oki, j'avais pas compris que le champ faisait partie de la clé
primaire. Je croyais qu'il était clé primaire à part entière.

Ceci dit, ça ne change pas grand chose, c'est difficile de concevoir
qu'une "non-valeur" puisse servir de référence à un enregistrement.

en gros, si tu veux l'inclure dans ta clé primaire, je suppose que
c'est parce que tu va avoir une ligne obj_id, prop_id dupliquée l'une
avec une date_deleted et l'autre sans?
Si c'est le cas, malheureusement, je ne vois que la solution d'avoir un
champ type "boolean" (integer, smallint, ou autre) qui va dire si le
champ date_deleted est renseigné (1, true, 'Y', ou autre) ou non (0,
false, 'N', ou autre) et inclure ce champ dans ta clé primaire

si tu n'as pas de duplication de ligne obj_id, prop_id alors il y'a une
erreur dans la conception de ta base puisque le champ date_deleted ne
doit pas faire partie de ta clé primaire

> oui je connait le but de la clé primaire. Dans mon cas précit, le champ
> val_date_deleted qui fait partit de la clé primaire et soit renseigner ou
> pas. sous mysql cela tourne or la migration sous sql server n'est pas si
> facile que çà ...
>
> "Faust" wrote:
>
>> le principe d'une clé primaire est de pouvoir identifier de maniÚre
>> unique n'importe quel enregistrement
>> donc au mieux tu ne pourrais avoir qu'un seul enregistrement avec ta
>> valeur date_deleted à null
>>
>>> Bonjour,
>>>
>>> je souhaiterais cr�©er une table avec la possibilit�© d'avoir une
>>> cl�© primaire a null. Ma table se d�©compose ainsi :
>>>
>>> Val_obj_id =>pk
>>> val_prop_id =>pk
>>> val_date_deleted => pk
>>> val_values
>>>
>>> mon pb est que le champs val_date_deleted peut etre null or sql server le
>>> refuse. sous d'autre sgbd cela marche (mysql par exemple). Y a t'il une
>>> propri�©te a modifier sur le serveur pour que les cl�©s primaire null
>>> soit pris en compte ?
>>>
>>> par avance merci de votre aide
>>>
>>> Mic79
>>
>> --
>> Mephitiquement votre,
>> Faust
>> ICQ #161252577
>>

--
Mephitiquement votre,
Faust
ICQ #161252577




Avatar
Sylvain Lafontaine
Les clefs primaires servent au référencement externe par d'autres tables.
Êtes-vous sûr que ce n'est pas d'un index que vous avez besoin à la place?

S. L.

"Mic" wrote in message
news:
ouais je c que c difficile de concevoir q'une valeur null peut etre clé
primaire et tu as vu juste y a bien une duplication des cles obj_id et
prop_id. j'y ai penser au truc du booleen mais bon j'aurais préféré une
ptite
modif dans la config du serveur pour que ça marche

merci comme meme

"Faust" wrote:

ah oki, j'avais pas compris que le champ faisait partie de la clé
primaire. Je croyais qu'il était clé primaire à part entière.

Ceci dit, ça ne change pas grand chose, c'est difficile de concevoir
qu'une "non-valeur" puisse servir de référence à un enregistrement.

en gros, si tu veux l'inclure dans ta clé primaire, je suppose que
c'est parce que tu va avoir une ligne obj_id, prop_id dupliquée l'une
avec une date_deleted et l'autre sans?
Si c'est le cas, malheureusement, je ne vois que la solution d'avoir un
champ type "boolean" (integer, smallint, ou autre) qui va dire si le
champ date_deleted est renseigné (1, true, 'Y', ou autre) ou non (0,
false, 'N', ou autre) et inclure ce champ dans ta clé primaire

si tu n'as pas de duplication de ligne obj_id, prop_id alors il y'a une
erreur dans la conception de ta base puisque le champ date_deleted ne
doit pas faire partie de ta clé primaire

> oui je connait le but de la clé primaire. Dans mon cas précit, le
> champ
> val_date_deleted qui fait partit de la clé primaire et soit renseigner
> ou
> pas. sous mysql cela tourne or la migration sous sql server n'est pas
> si
> facile que çà ...
>
> "Faust" wrote:
>
>> le principe d'une clé primaire est de pouvoir identifier de maniÃsre
>> unique n'importe quel enregistrement
>> donc au mieux tu ne pourrais avoir qu'un seul enregistrement avec ta
>> valeur date_deleted à null
>>
>>> Bonjour,
>>>
>>> je souhaiterais cr�©er une table avec la possibilit�© d'avoir une
>>> cl�© primaire a null. Ma table se d�©compose ainsi :
>>>
>>> Val_obj_id =>pk
>>> val_prop_id =>pk
>>> val_date_deleted => pk
>>> val_values
>>>
>>> mon pb est que le champs val_date_deleted peut etre null or sql
>>> server le
>>> refuse. sous d'autre sgbd cela marche (mysql par exemple). Y a t'il
>>> une
>>> propri�©te a modifier sur le serveur pour que les cl�©s primaire
>>> null
>>> soit pris en compte ?
>>>
>>> par avance merci de votre aide
>>>
>>> Mic79
>>
>> --
>> Mephitiquement votre,
>> Faust
>> ICQ #161252577
>>

--
Mephitiquement votre,
Faust
ICQ #161252577






Avatar
Fred BROUARD
Principe de base et fondement des bases de données : la clef d'une table ne doit
JAMAIS être non rensignée (marqueur NULL)

C'est impossible par principe raisonnable.
Une clef ouvre une serrure.
Imagine une serreure fermée à clef... Sans trou pour y mettre la clef...

A +

Mic a écrit:
Bonjour,

je souhaiterais créer une table avec la possibilité d'avoir une clé primaire
a null. Ma table se décompose ainsi :

Val_obj_id =>pk
val_prop_id =>pk
val_date_deleted => pk
val_values

mon pb est que le champs val_date_deleted peut etre null or sql server le
refuse. sous d'autre sgbd cela marche (mysql par exemple). Y a t'il une
propriéte a modifier sur le serveur pour que les clés primaire null soit pris
en compte ?

par avance merci de votre aide

Mic79



--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste 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 *************************
Avatar
Mic
Ca y est je viens de réussir a créer ma table avec l'une de mes clés a null
(de tps en tps a null)
Merci de votre aide et merci de m'avoir redonner la def d'une clé primaire
:-))

Ca marche et c trop top !!!!!

"Fred BROUARD" wrote:

Principe de base et fondement des bases de données : la clef d'une table ne doit
JAMAIS être non rensignée (marqueur NULL)

C'est impossible par principe raisonnable.
Une clef ouvre une serrure.
Imagine une serreure fermée à clef... Sans trou pour y mettre la clef...

A +

Mic a écrit:
> Bonjour,
>
> je souhaiterais créer une table avec la possibilité d'avoir une clé primaire
> a null. Ma table se décompose ainsi :
>
> Val_obj_id =>pk
> val_prop_id =>pk
> val_date_deleted => pk
> val_values
>
> mon pb est que le champs val_date_deleted peut etre null or sql server le
> refuse. sous d'autre sgbd cela marche (mysql par exemple). Y a t'il une
> propriéte a modifier sur le serveur pour que les clés primaire null soit pris
> en compte ?
>
> par avance merci de votre aide
>
> Mic79

--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste 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 *************************