I ont le schéma de base de données suivant dans MySQL, que nous avons répliqué dans PostgreSQL en utilisant un ORM:Insertion valeur NULL aux champs de timestamp dans postgreqSQL
CREATE TABLE IF NOT EXISTS users (
id BIGINT NOT NULL DEFAULT NEXTVAL ('users_seq'),
email VARCHAR(255) NOT NULL DEFAULT '',
password VARCHAR(255) NOT NULL DEFAULT '',
last_name VARCHAR(255) NOT NULL DEFAULT '',
first_name VARCHAR(255) NOT NULL DEFAULT '',
created TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
Et je suis en train d'exécuter la requête suivante
INSERT INTO users (id, email, password,first_name, last_name, created, updated)
VALUES (1, '[email protected]', 'pass', 'user', 'user', NULL, NULL);
Il en résulte une erreur
ERROR: null value in column "created" violates not-null constraint
Comportement attendu est d'avoir l'horodatage en cours dans le cas où la valeur est NULL, et fonctionne en MySQL
J'utilise PostgreSQL 10. Ai-je manqué une configuration ou n'est-ce pas supporté dans Postgres?
Enlever postgres des étiquettes s'il vous plaît. si vous voulez une valeur par défaut, sautez la colonne de la liste - si vous spécifiez explicitement 'NULL' - elle sera inerte NULL, pas' DEFAULT' –
autorisez null pour les champs 'created' et' updated', vous essayez d'insérer null dans champs non nullables. Seule la valeur par défaut sera insérée si votre requête d'insertion n'a pas ce champ. – Bharat
@VaoTsun Pourquoi supprimer la balise postgres ?. Ceci est supporté par mysql. Cette requête est générée à partir d'une bibliothèque ORM. – Anuruddha