Page 1 sur 1

Re: [R] SQLite et types de données

Posté : sam. 01 févr. 2020 17:24
par GMH
Bonjour,

Comment précise-t-on les types de données dans la création d'une base SQLite ?

J'ai tenté :

Code : Tout sélectionner

_SQLite_Exec(-1, 'CREATE TABLE IF NOT EXISTS journal ' & _
                '(id, date, libelle NOT NULL, moyen, categorie, debit numeric(5,2), credit  numeric(5,2), solde')
La base accepte un libellé vide malgré le NOT NULL, tout comme des nombres à plus de 5 chiffres et à plus de 2 décimales malgré les types précisés.

Ce n'est pas de cette manière qu'il faut déclarer les types de données ?

Je vous remercie de votre réponse.

Re: [..] SQLite et types de données

Posté : sam. 01 févr. 2020 20:26
par jchd
SQLite utilise un typage dynamique. Une colonne peut optionnellement déclarer un type mais il n'est pas contraignant et n'est pas un type au sens habituel.
N'importe quel type peut être stocké n'importe où, à quelques exceptions près. La déclaration d'un type est en fait la déclaration d'une affinité.

Le mieux est de se référer à la documentation officielle.

Re: [R] SQLite et types de données

Posté : sam. 01 févr. 2020 20:43
par GMH
Ah ! d'accord, je me bagarre alors pour rien !

Merci à vous.

Re: [R] SQLite et types de données

Posté : sam. 01 févr. 2020 22:32
par jchd
Non, déclarer les "types" dans le DDL est très utile, voire indispensable (e.g. INTEGER PRIMARY KEY).
On peut toujours imposer une contrainte sur le type (ou une contrainte d'un autre genre) avec une ou des clause(s) CHECK.

Une fois qu'on s'est fait à l'idée du comportement de SQLite, ce n'est absolument pas un problème, bien au contraire.

create table t1 (x int);
insert into t1 values (43), ('17'), ('-005');
select * from t1;

create table t2 (id integer primary key, object);
-- dans object on peut stocker un blob d'image, une URL, un UUID, etc.

Re: Re: [R] SQLite et types de données

Posté : dim. 02 févr. 2020 19:30
par GMH
Je vous remercie de ces précisions.