Obtenir un record vierge.

Le
WebShaker
Bon dans la série des questions tordues,

j'aimerai savoir s'il est possible d'obtenir un record initialisé avec
les valeurs par défaut configurée dans la base de données.

Par exemple si j'ai un tabl définie comme telle:

CREATE TABLE "tbl" (
"idtbl" serial NOT NULL,
"idowner" integer DEFAULT NULL,
"private_data" boolean default false,
"create_date" timestamp without time zone DEFAULT 'now',
"update_date" timestamp without time zone DEFAULT 'now',
"title" text,
"online" boolean default true,
"content" text,
PRIMARY key (idbtl)
);

j'aimerai pouvoir obtenir un enregistrement qui contiendrai
null,
null,
false,
now,
now,
null,
true,
null

est ce possible?
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Sebastien Lardiere
Le #21924731
Le 31/01/2010 22:11, WebShaker a écrit :
Bon dans la série des questions tordues,

j'aimerai savoir s'il est possible d'obtenir un record initialisé avec
les valeurs par défaut configurée dans la base de données.

Par exemple si j'ai un tabl définie comme telle:

CREATE TABLE "tbl" (
"idtbl" serial NOT NULL,
"idowner" integer DEFAULT NULL,
"private_data" boolean default false,
"create_date" timestamp without time zone DEFAULT 'now',
"update_date" timestamp without time zone DEFAULT 'now',
"title" text,
"online" boolean default true,
"content" text,
PRIMARY key (idbtl)
);

j'aimerai pouvoir obtenir un enregistrement qui contiendrai
null,
null,
false,
now,
now,
null,
true,
null

est ce possible?



Non, il est indiqué not null dans la définition des 2 premiers
attributs, on ne peut donc pas obtenir null

Hors mis ça, il est tout à fait possible d'inserer un tuple avec
seulement des valeurs par défaut, oui,

--
Sébastien
WebShaker
Le #21924701
Sebastien Lardiere a écrit :
Hors mis ça, il est tout à fait possible d'inserer un tuple avec
seulement des valeurs par défaut, oui,



Nan. Hum si je crée un enregistrement, je vais utiliser un serial. pas
glop. je vais plutot m'orienter vers la lecture du schema.

L'idée étant que développer une class (PHP) générique qui permette la
création d'un enregistrement en initialisant les champs avec les valeurs
par défaut de la base de donnée.

Merci quand meme...
Je me dote bien que dans le lot de mes question tordues, tout n'est pas
possible :)

Etienne
Sebastien Lardiere
Le #21924681
Le 01/02/2010 21:56, WebShaker a écrit :
Sebastien Lardiere a écrit :
Hors mis ça, il est tout à fait possible d'inserer un tuple avec
seulement des valeurs par défaut, oui,



Nan. Hum si je crée un enregistrement, je vais utiliser un serial. pas
glop. je vais plutot m'orienter vers la lecture du schema.

L'idée étant que développer une class (PHP) générique qui permette la
création d'un enregistrement en initialisant les champs avec les valeurs
par défaut de la base de donnée.




Ok, une sorte d'ORM, quoi. Voici un requête dans pg_catalog permettant
cela :

select
a.attname,
d.adsrc
from pg_class c join pg_namespace n
on c.relnamespace=n.oid
join pg_attribute a
on a.attrelid=c.oid
left join pg_attrdef d
on d.adrelid=c.oid and d.adnum=a.attnum
where c.relname='<nomtable>'
and n.nspname='<nomschema>'
and a.attnum > 0
and c.relkind='r'
order by a.attnum ;

De quoi s'amuser un peu ...

--
Sébastien
WebShaker
Le #21924671
Sebastien Lardiere a écrit :
Ok, une sorte d'ORM, quoi. Voici un requête dans pg_catalog permettant
cela :

select
a.attname,
d.adsrc
from pg_class c join pg_namespace n
on c.relnamespace=n.oid
join pg_attribute a
on a.attrelid=c.oid
left join pg_attrdef d
on d.adrelid=c.oid and d.adnum=a.attnum
where c.relname='<nomtable>'
and n.nspname='<nomschema>'
and a.attnum > 0
and c.relkind='r'
order by a.attnum ;

De quoi s'amuser un peu ...




Merci !!!
SQLpro
Le #21924411
Contrairement à ce que l'on vous as dit, c'est parfaitement possible en
lançant la commande normative :

INSERT INTO tbl DEFAULTS VALUES;

Pour vous perfectionner ua langage SQL, rien de plus simple qu'un bon
bouquin comme le mien ou vous auriez trouver cette syntaxe à la page 170.

A +

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technologies
*********************** http://www.sqlspot.com *************************


WebShaker a écrit :
Bon dans la série des questions tordues,

j'aimerai savoir s'il est possible d'obtenir un record initialisé avec
les valeurs par défaut configurée dans la base de données.

Par exemple si j'ai un tabl définie comme telle:

CREATE TABLE "tbl" (
"idtbl" serial NOT NULL,
"idowner" integer DEFAULT NULL,
"private_data" boolean default false,
"create_date" timestamp without time zone DEFAULT 'now',
"update_date" timestamp without time zone DEFAULT 'now',
"title" text,
"online" boolean default true,
"content" text,
PRIMARY key (idbtl)
);

j'aimerai pouvoir obtenir un enregistrement qui contiendrai
null,
null,
false,
now,
now,
null,
true,
null

est ce possible?
helios
Le #21924401
SQLpro a écrit :
Contrairement à ce que l'on vous as dit, c'est parfaitement possible en
lançant la commande normative :

INSERT INTO tbl DEFAULTS VALUES;

Pour vous perfectionner ua langage SQL, rien de plus simple qu'un bon
bouquin comme le mien ou vous auriez trouver cette syntaxe à la page 170.

A +




et a quelle pages est il indiqué comment mettre toute les dates jusqu'à
nos jours depuis Jésus christ codé sur 2 octet comme le prétend sur cet
usenet l'auteur du dit bouquin ?
Sebastien Lardiere
Le #21924371
Le 28/02/2010 19:34, SQLpro a écrit :
Contrairement à ce que l'on vous as dit, c'est parfaitement possible en
lançant la commande normative :

INSERT INTO tbl DEFAULTS VALUES;




Pas du tout, c'est ce que je dit en réponse à son premier message, et il
dit bien que ce n'est pas ce qu'il veut,

Il faut relire le thread ...


Pour vous perfectionner ua langage SQL, rien de plus simple qu'un bon
bouquin comme le mien ou vous auriez trouver cette syntaxe à la page 170.




Ah, d'accord, c'est juste pour placer de la publicité déguisée

lol :)

--
Sébastien
helios
Le #21924361
Sebastien Lardiere a écrit :
Le 28/02/2010 19:34, SQLpro a écrit :
Contrairement à ce que l'on vous as dit, c'est parfaitement possible en
lançant la commande normative :

INSERT INTO tbl DEFAULTS VALUES;




Pas du tout, c'est ce que je dit en réponse à son premier message, et il
dit bien que ce n'est pas ce qu'il veut,

Il faut relire le thread ...


Pour vous perfectionner ua langage SQL, rien de plus simple qu'un bon
bouquin comme le mien ou vous auriez trouver cette syntaxe à la page 170.




Ah, d'accord, c'est juste pour placer de la publicité déguisée

lol :)



fait gaffe le mec attaque en diffamation tout ceux qui le contredise et
persiste meme lorsque le tribunal lui donne tord en faisant appel
Publicité
Poster une réponse
Anonyme