Voici une étude comparant les fonctionnalités de Microsoft SQL Server version 2012 et de PostGreSQL version 9.2.
Dans ce comparatif des fonctionnalités de nombreuses sources et explication sont fournies.
Comparaison PostGreSQL 9.2 Microsoft SQL Server 2012 fonctionnalités
Le site web sur le SQL et les SGBDR
Frédéric Brouard, alias SQLpro, ARCHITECTE DE DONNÉES
Expert S.G.B.D relationnelles et langage S.Q.L
Moste Valuable Professionnal Microsoft SQL Server
Société SQLspot : modélisation, conseil, formation,
optimisation, audit, tuning, administration SGBDR
Enseignant: CNAM PACA, ISEN Toulon, CESI Aix en Prov.
L’ntreprise SQL Spot
Salut sqlpro
Avec DEFERRABLE la requête passe!
Oui, mais ce n’est justement pas le comportement attendu. Ceci n’a rien à voir avec la déferrabilité des contraintes. Lisez mon livre sur SQL et complétez par cet article :
http://blog.developpez.com/sqlpro/p6025/langage-sql-norme/contraintes_sql_et_deferabilite
L’usage de la defferabilité dans ce cas est parfaitement injustifiable car il n’y a pas de transaction portant sur plusieurs ordre SQL comme c’est le cas de références circulaire.
Bref, c’est une solution de contournement à un problème que PostGreSQL ne sait pas résoudre (alors que tous les autres SGBSR comme Oracle, DB2, Sybase ou MS SQL Server le font…).
En effet, la solution avec la déférabilité pourrait entacher le comportement global de la transaction avec un résultat inattendu, d’autant plus que PostGreSQL ne sait pas gérer les transactions dans les routines…
Bonjour Fred,
J’ai lu le début et j’ai déjà plein de questions alors j’ai arrêté. Tu devrais donner des explications ou renvoyer vers des sources pour expliquer les termes que tu emploies.
Par exemple…
1) À « Serveur multibase », tu dis « oui » pour SQL Server et « oui (mais cloisonnement) » pour PostgreSQL.
Chez MySQL, on peut créer plusieurs BDD sur un serveur mais il me semble que celles-ci sont étanches : on ne peut pas faire une requête sur plusieurs BDD en même temps mais on peut en faire sur plusieurs schéma à l’intérieur d’une BDD, contrairement à MySQL qui confond la notion de BDD et de schéma et qui autorise donc les requêtes « multi-bdd ».
Cela veut-il dire que sur SQL Server, on peut faire une requête sur plusieurs BDD en même temps ?
2) Qu’appelles-tu « Requêtes de mise à jour ensemblistes » ?
Une requête UPDATE agit sur l’ensemble des lignes de la table, ensemble éventuellement restreint par une clause WHERE, dans tous les SGBD !
1) dans MS SQL Server on peut par exemple faire une requête telle que :
FROM master.sys.objects AS o1
FULL OUTER JOIN msdb.sys.objects AS o2
ON o1.object_id = o2.object_id
WHERE o1.name IS NULL OR o2.name IS NULL;
2) par requête ensembliste une requête qui bascule GLOBALEMENT l’état de l’ensemble des données d’un seul coup. par exemple :
-- les valeurs de cette colonne étant impérativement unique...
CREATE TABLE T_SET (VAL INT UNIQUE)
-- insérons quelques valeurs qui respectent l'unicité :
INSERT INTO T_SET VALUES (-8)
INSERT INTO T_SET VALUES (-7)
INSERT INTO T_SET VALUES (-6)
INSERT INTO T_SET VALUES (-5)
INSERT INTO T_SET VALUES (-4)
INSERT INTO T_SET VALUES (-3)
INSERT INTO T_SET VALUES (-2)
INSERT INTO T_SET VALUES (-1)
INSERT INTO T_SET VALUES (0)
INSERT INTO T_SET VALUES (1)
INSERT INTO T_SET VALUES (2)
INSERT INTO T_SET VALUES (3)
INSERT INTO T_SET VALUES (4)
INSERT INTO T_SET VALUES (5)
INSERT INTO T_SET VALUES (6)
INSERT INTO T_SET VALUES (7)
INSERT INTO T_SET VALUES (8)
UPDATE T_SET
SET VAL = POWER(VAL, 3)