intégrité référentielle (trigger) qui marche pas

intégrité référentielle (trigger) qui marche pas - SQL/NoSQL - Programmation

Marsh Posté le 26-10-2004 à 13:37:09    

JE travaille sous MySQL 3.23
 
voici ma requete
 
CREATE TABLE `stats` (
`ID_visite` INT( 4 ) NOT NULL AUTO_INCREMENT ,
`ref_page_visitee` INT( 4 ) NOT NULL ,
`nombre_visites` INT( 5 ) NOT NULL ,
`date_visite` DATETIME NOT NULL ,
`addr_ip_visiteur` VARCHAR( 15 ) NOT NULL ,
PRIMARY KEY ( `ID_visite` ),
FOREIGN KEY (  `ref_page_visitee`) references submenus(`ID_submenu`)
on delete cascade on update cascade
);
 
normalement si la clé primaire "ID_submenu" de la table "submenus" est modifiée, la clé etrangere "ref_page_visitee" de cette table "stats" est automatiquement mise a jour
 
et poyrtant j'ai fait le test et la clé etrangere de la table stats est pas mise a jour si je change la clé primaire de la table submenus
 
je vois pas pourquoi

Reply

Marsh Posté le 26-10-2004 à 13:37:09   

Reply

Marsh Posté le 26-10-2004 à 15:09:22    

Euh, t'es sûr que MySQL supporte les "on" "cascade" ?
 
A ma connaissance, les triggers ne sont pas supportés à ce jour, tout juste à peine sur les versions 4.x qui ne sont pas du tout en release encore... (à moins que ce soit la 5.x, je ne me souviens plus, Joce avait pondu tout un topic très intéressant à ce sujet il y a un an)

Reply

Marsh Posté le 26-10-2004 à 15:29:55    

arff, c bien possible
dnc ca veut dire que si je veux des triggers pour garder une base de données avec des données cohérentes d'une clé a l'autre, il fauty que j'opte pour un SGBDR plus costaud comme SQL Server ou Oracle ?
 
Je cherche globalement a utiliser les triggers et à pouvoir faire des requetes SQl imbriquées
 
PostgreSQL peut il etre une solution pour mon probleme ? ou faut carrement que bosse sur MS-SQL ou Oracle ?

Reply

Marsh Posté le 26-10-2004 à 16:26:36    

Pour ces "trigger" qui sont gérés directement par le système, je ne sais pas. Ca demande confirmation de la part d'une personne qui connait bien MySQL.
 
Sinon, ben t'as le choix entre une pre-version de MySQL 4.x ou PostgreSQL comme solutions gratuites si tu veux gérer de vrais triggers (à confirmer pour MySQL 4.x cependant) et des requêtres imbriquées.
 
MSSQL Server est aussi une très bonne alternative, mais le coût n'est pas le même (quoique MSDE qui est fourni gratuitement avec le Pack Office fourni une bonne alternative si tu as une faible charge et pas de besoins complexes (pas de DTS, etc.)
 
Après, si c'est un développement payé, il faut voir si la perte de temps à bosser avec un outil pourri justifie vraiment l'économie d'une licence MSSQL cependant ;)
 
PS: Normalement, PostgreSQL est un très bon produit. Par contre, il n'est pas réprendu du tout, donc soit il y a anguille sous roche, soit il y a une dimension "politico-stratégique" que je ne maîtrise pas.


Message édité par Arjuna le 26-10-2004 à 16:28:03
Reply

Marsh Posté le 26-10-2004 à 17:28:41    

ben le probeme de fond pour le moment c'est que mon site est hebergé chez free. donc au niveau online, je resterai limité a ce que free et MySQL limitent.
 
par contre en local, ben c'est vrai que le choix est pas evident. en outre, je comte utiliser mon PC comme serveur histoire de plus etre limité a Free et faire ce que bon me semble.
Maid comme tu dis PostgreSQL est pas hyper repandu donc niveau doc ca va etre moyen.
Apres ya les solutions payantes, mais comme je suis a la recherche d'un taff ya peu de chances que j'investisse surtout que ya pas de projet a but lucratif derriere, donc rien pour amortir la licence. C'est sans compter sur le fait que c'est pas simple au depart d'administrer du Oracle ou Ms-SQL.
 
je crois que je vais opter pour PostGreQSL
 
Mais j'ai vu dans ma version de phpMyADmin, que la fonction relationelle de MySQL existe, donc qui dit relationnel devrait dire : mise a jour automatique des clés.
 
mystere...
au fait c quoi MSDE ? Micosoft Developer Data Engine ?

Reply

Marsh Posté le 26-10-2004 à 17:35:42    

Juste par curiosité, tu peux nous montrer le DDL pour la table submenus ?

Reply

Marsh Posté le 26-10-2004 à 17:42:40    

Alors :
 
MSDE Rev.A : http://www.microsoft.com/downloads [...] layLang=en
Gratuit. C'est un SQL Server 2000 "lite", c'est à dire sans outil d'admin avancé, et limité à 10 connections. Pour un site perso, cette limitation est largement suffisante, tu ne risque pas de l'atteindre (OLE DB réutilise la même connection pour faire passer les différents accès)
 
T'as aussi la Beta 2 de SQL Server 2005 Express, successeur de MSDE (gratuit aussi, même limitations, avec quelques bugs en plus certainement, mais aussi de belles fonctionnalités en plus normalement ;))
http://www.microsoft.com/downloads [...] layLang=en
 
SQL Server Web Data Administrator
http://www.microsoft.com/downloads [...] layLang=en
 
Tu connais PHPMyAdmin ? Ben là c'est pareil (certainement en mieu, on connait les outils microsoft pour leur ergonomie) pour SQL Server en version ASP (sur IIS)
 
Il ne te reste plus qu'à trouver un Windows 2003 Server Web Edition (dans les 700 € si mes souvenirs sont bons), ou prier pour que ça tourne sur un XP Home avec PWS installé ;)
 
Voilà :) On peut donc bosser avec des outils de pro sans avoir de gros moyens ;)
 
PS: SQL Server 2000, depuis le début j'en ai installé/administré une chiée, c'est vraiment pas plus compliqué qu'Access : tu installes, tu cliques, et ça marche :) Ensuite, ouais, si tu paufines ça devient plus chaud, mais pour un fonctionnement de base, aucun problème !

Reply

Marsh Posté le 26-10-2004 à 17:50:39    

Au fait : MSDE = Microsoft SQL Server 2000 Desktop Engine

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed