|
||||
Ouverture de sessionNavigationContactez-nousAdministration du site : RechercheSujets du forumSujets actifsNouveaux sujets:SyndicationSondageQuelle est la version de PostgreSQL la plus répandue sur vos serveurs ? 8.3 10% 8.2 42% 8.1 40% 8.0 2% 7.4 6% 7.3 ou antérieure 0% Nombre de votes: 48 |
Clé primaire et not nullTechnique - général | Clé primaire et not nullPar sbouchard le 27/08/2007 - 15:12 Bonjour, J'utilise Postgresql 8.2.3 sur Windows Server 2003 Lors de la création d'une contrainte de clé primaire (PK) , une contrainte NOT NULL est automatiquement créée et nommée par le noyau. Tout à fait normal. Lors de la suppression de la contraint PK, la contrainte NOT NULL créée par le noyau n'est pas suprimée automatiquement. De ce fait, l'insertion de tuples sans valeur pour cette colonne n'est pas autorisée. Comment est-ce possible? La vue information_schema.table_constraints permet de visualiser le nom de cette contrainte. Toutefois, sa suppression manuelle par ALTER TABLE n'est pas possible. De toute manière, cela n'aurait pas beaucoup de sens de devoir supprimer manuellement les contraintes créées par le noyau. QUelqu'un a-t-il une solution élégante? Une mise à jour doit-elle être installée? Merci de vos conseils Sylvie Exemple : CREATE TABLE test2 ( INSERT INTO test2 (c1, c2) VALUES (1, 'a'); -- OK INSERT INTO test2 (c2) VALUES ('b'); -- Erreur attendue ALTER TABLE test2 DROP CONSTRAINT test2_pkey; -- OK INSERT INTO test2 (c2) VALUES ('b'); -- OUPS! --ERROR: null value in column "c1" violates not-null constraint canada=> \d test2 Column | Type | Modifiers SELECT constraint_name, constraint_type constraint_name | constraint_type ALTER TABLE test2 DROP CONSTRAINT 16690_76762_1_not_null; ERROR: syntax error at or near "16690" |
|||
© PostgreSQLFr, tous droits réservés.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.