Comment faire une "semi intégrité", c'est à dire un trigger qui, même si il
n'arrive pas à reporter des modif dans une table semi-dépendante, n'affecte
pas son execution.
J'ai donc une table T1 avec clé primaire, et T2 avec une clé externe
(unique) . En fait T2 est une extension de T1 dans une relation 1-1
J'ai mis une relation (sans rien cocher verif à la creation, appliquer
relation réplication,appliquer insert-update)
Je voudrais mettre un trigger sur T1 en insert/delete pour faire un
insert/delete sur T2. Mais si pour une raison quelconque le insert/delete
sur T2 échoue , je ne veux pas pour autant que la mise à jour de T1 soit
affectée.
Je voulais savoir si
1-Cette relation pouvait bloquer la mise à jour
2- Si j'ai interet à reporter les mises à jour du trigger dans une SP , mais
dans ce cas comment reporter les tables INSERTED/DELETED de T1. (j'imagine
éventuellement une table intermédiaire, avec l'identite, date, type action,
et cause échec) ....
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
LuckyMan
Fred BROUARD wrote:
Vous n'êtes pas du tout clair dans vos explications. Pouvez vous poster le SQL de vos table en jeu (CREATE TABLE...), un jeu de données sous forme d'INSERT SQL et les résultats que vous voulez ? Ceci afin de mettre au point le code correspondant à votre attente.
En fait je veux que les triggers de T1 n'échouent pas ( pas de rollback) même si les mises à jour la table T2 échouent .
Le trigger de T1 en Delete pas exemple serait de la forme
CREATE TRIGGER tr_T1_AfterDelete01 ON T1 FOR DELETE AS DELETE FROM T2 WHERE T2_ID IN (SELECT T1_ID FROM DELETED)
Je pense qu'il n'y a pas de pb car pas de transaction dans le trigger mais je ne voudrais pas avoir de surprise si l'instruction DELETE dans le trigger échoue.
Merci de votre conseil
Fred BROUARD wrote:
Vous n'êtes pas du tout clair dans vos explications. Pouvez vous
poster le SQL de vos table en jeu (CREATE TABLE...), un jeu de
données sous forme d'INSERT SQL et les résultats que vous voulez ?
Ceci afin de mettre au point le code correspondant à votre attente.
En fait je veux que les triggers de T1 n'échouent pas ( pas de rollback)
même si les mises à jour la table T2 échouent .
Le trigger de T1 en Delete pas exemple serait de la forme
CREATE TRIGGER tr_T1_AfterDelete01 ON T1
FOR DELETE
AS
DELETE FROM T2
WHERE T2_ID IN (SELECT T1_ID FROM DELETED)
Je pense qu'il n'y a pas de pb car pas de transaction dans le trigger mais
je ne voudrais pas avoir de surprise si l'instruction DELETE dans le trigger
échoue.
Vous n'êtes pas du tout clair dans vos explications. Pouvez vous poster le SQL de vos table en jeu (CREATE TABLE...), un jeu de données sous forme d'INSERT SQL et les résultats que vous voulez ? Ceci afin de mettre au point le code correspondant à votre attente.
En fait je veux que les triggers de T1 n'échouent pas ( pas de rollback) même si les mises à jour la table T2 échouent .
Le trigger de T1 en Delete pas exemple serait de la forme
CREATE TRIGGER tr_T1_AfterDelete01 ON T1 FOR DELETE AS DELETE FROM T2 WHERE T2_ID IN (SELECT T1_ID FROM DELETED)
Je pense qu'il n'y a pas de pb car pas de transaction dans le trigger mais je ne voudrais pas avoir de surprise si l'instruction DELETE dans le trigger échoue.
Merci de votre conseil
Fred BROUARD
Un rollback n'est pas quelque chose qui se déclenche automatiquement d'ou votre confusion.
Un rollback ne peut être déclenché que par une programmation, sauf dans le cas très rare de triggers déféré (MS SQL Server ne les implémentent pas).
Donc l'échec sur table objet du trigger n'affecte pas la commande qui l'a déclenchée.
De plus les triggers MS SQL Server sont AFTER.
Je vous invite à vous former sur le sujet...
A +
LuckyMan a écrit:
Fred BROUARD wrote:
Vous n'êtes pas du tout clair dans vos explications. Pouvez vous poster le SQL de vos table en jeu (CREATE TABLE...), un jeu de données sous forme d'INSERT SQL et les résultats que vous voulez ? Ceci afin de mettre au point le code correspondant à votre attente.
En fait je veux que les triggers de T1 n'échouent pas ( pas de rollback) même si les mises à jour la table T2 échouent .
Le trigger de T1 en Delete pas exemple serait de la forme
CREATE TRIGGER tr_T1_AfterDelete01 ON T1 FOR DELETE AS DELETE FROM T2 WHERE T2_ID IN (SELECT T1_ID FROM DELETED)
Je pense qu'il n'y a pas de pb car pas de transaction dans le trigger mais je ne voudrais pas avoir de surprise si l'instruction DELETE dans le trigger échoue.
Merci de votre conseil
-- 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 ********************* http://www.datasapiens.com ***********************
Un rollback n'est pas quelque chose qui se déclenche automatiquement d'ou votre
confusion.
Un rollback ne peut être déclenché que par une programmation, sauf dans le cas
très rare de triggers déféré (MS SQL Server ne les implémentent pas).
Donc l'échec sur table objet du trigger n'affecte pas la commande qui l'a
déclenchée.
De plus les triggers MS SQL Server sont AFTER.
Je vous invite à vous former sur le sujet...
A +
LuckyMan a écrit:
Fred BROUARD wrote:
Vous n'êtes pas du tout clair dans vos explications. Pouvez vous
poster le SQL de vos table en jeu (CREATE TABLE...), un jeu de
données sous forme d'INSERT SQL et les résultats que vous voulez ?
Ceci afin de mettre au point le code correspondant à votre attente.
En fait je veux que les triggers de T1 n'échouent pas ( pas de rollback)
même si les mises à jour la table T2 échouent .
Le trigger de T1 en Delete pas exemple serait de la forme
CREATE TRIGGER tr_T1_AfterDelete01 ON T1
FOR DELETE
AS
DELETE FROM T2
WHERE T2_ID IN (SELECT T1_ID FROM DELETED)
Je pense qu'il n'y a pas de pb car pas de transaction dans le trigger mais
je ne voudrais pas avoir de surprise si l'instruction DELETE dans le trigger
échoue.
Merci de votre conseil
--
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
********************* http://www.datasapiens.com ***********************
Un rollback n'est pas quelque chose qui se déclenche automatiquement d'ou votre confusion.
Un rollback ne peut être déclenché que par une programmation, sauf dans le cas très rare de triggers déféré (MS SQL Server ne les implémentent pas).
Donc l'échec sur table objet du trigger n'affecte pas la commande qui l'a déclenchée.
De plus les triggers MS SQL Server sont AFTER.
Je vous invite à vous former sur le sujet...
A +
LuckyMan a écrit:
Fred BROUARD wrote:
Vous n'êtes pas du tout clair dans vos explications. Pouvez vous poster le SQL de vos table en jeu (CREATE TABLE...), un jeu de données sous forme d'INSERT SQL et les résultats que vous voulez ? Ceci afin de mettre au point le code correspondant à votre attente.
En fait je veux que les triggers de T1 n'échouent pas ( pas de rollback) même si les mises à jour la table T2 échouent .
Le trigger de T1 en Delete pas exemple serait de la forme
CREATE TRIGGER tr_T1_AfterDelete01 ON T1 FOR DELETE AS DELETE FROM T2 WHERE T2_ID IN (SELECT T1_ID FROM DELETED)
Je pense qu'il n'y a pas de pb car pas de transaction dans le trigger mais je ne voudrais pas avoir de surprise si l'instruction DELETE dans le trigger échoue.
Merci de votre conseil
-- 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 ********************* http://www.datasapiens.com ***********************
Fred BROUARD
Vous n'êtes pas du tout clair dans vos explications. Pouvez vous poster le SQL de vos table en jeu (CREATE TABLE...), un jeu de données sous forme d'INSERT SQL et les résultats que vous voulez ? Ceci afin de mettre au point le code correspondant à votre attente.
LuckyMan a écrit:
Bonjour,
Comment faire une "semi intégrité", c'est à dire un trigger qui, même si il n'arrive pas à reporter des modif dans une table semi-dépendante, n'affecte pas son execution.
J'ai donc une table T1 avec clé primaire, et T2 avec une clé externe (unique) . En fait T2 est une extension de T1 dans une relation 1-1
J'ai mis une relation (sans rien cocher verif à la creation, appliquer relation réplication,appliquer insert-update)
Je voudrais mettre un trigger sur T1 en insert/delete pour faire un insert/delete sur T2. Mais si pour une raison quelconque le insert/delete sur T2 échoue , je ne veux pas pour autant que la mise à jour de T1 soit affectée.
J'ai du mal à comprendre ce qu vous voulez faire avec un trigger INSERT envers la table 2. Donnez un exemple précis...
Je voulais savoir si 1-Cette relation pouvait bloquer la mise à jour 2- Si j'ai interet à reporter les mises à jour du trigger dans une SP , mais dans ce cas comment reporter les tables INSERTED/DELETED de T1. (j'imagine éventuellement une table intermédiaire, avec l'identite, date, type action, et cause échec) ....
Merci de votre conseil.
LM
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 ********************* http://www.datasapiens.com ***********************
Vous n'êtes pas du tout clair dans vos explications. Pouvez vous poster le SQL
de vos table en jeu (CREATE TABLE...), un jeu de données sous forme d'INSERT SQL
et les résultats que vous voulez ? Ceci afin de mettre au point le code
correspondant à votre attente.
LuckyMan a écrit:
Bonjour,
Comment faire une "semi intégrité", c'est à dire un trigger qui, même si il
n'arrive pas à reporter des modif dans une table semi-dépendante, n'affecte
pas son execution.
J'ai donc une table T1 avec clé primaire, et T2 avec une clé externe
(unique) . En fait T2 est une extension de T1 dans une relation 1-1
J'ai mis une relation (sans rien cocher verif à la creation, appliquer
relation réplication,appliquer insert-update)
Je voudrais mettre un trigger sur T1 en insert/delete pour faire un
insert/delete sur T2. Mais si pour une raison quelconque le insert/delete
sur T2 échoue , je ne veux pas pour autant que la mise à jour de T1 soit
affectée.
J'ai du mal à comprendre ce qu vous voulez faire avec un trigger INSERT envers
la table 2. Donnez un exemple précis...
Je voulais savoir si
1-Cette relation pouvait bloquer la mise à jour
2- Si j'ai interet à reporter les mises à jour du trigger dans une SP , mais
dans ce cas comment reporter les tables INSERTED/DELETED de T1. (j'imagine
éventuellement une table intermédiaire, avec l'identite, date, type action,
et cause échec) ....
Merci de votre conseil.
LM
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
********************* http://www.datasapiens.com ***********************
Vous n'êtes pas du tout clair dans vos explications. Pouvez vous poster le SQL de vos table en jeu (CREATE TABLE...), un jeu de données sous forme d'INSERT SQL et les résultats que vous voulez ? Ceci afin de mettre au point le code correspondant à votre attente.
LuckyMan a écrit:
Bonjour,
Comment faire une "semi intégrité", c'est à dire un trigger qui, même si il n'arrive pas à reporter des modif dans une table semi-dépendante, n'affecte pas son execution.
J'ai donc une table T1 avec clé primaire, et T2 avec une clé externe (unique) . En fait T2 est une extension de T1 dans une relation 1-1
J'ai mis une relation (sans rien cocher verif à la creation, appliquer relation réplication,appliquer insert-update)
Je voudrais mettre un trigger sur T1 en insert/delete pour faire un insert/delete sur T2. Mais si pour une raison quelconque le insert/delete sur T2 échoue , je ne veux pas pour autant que la mise à jour de T1 soit affectée.
J'ai du mal à comprendre ce qu vous voulez faire avec un trigger INSERT envers la table 2. Donnez un exemple précis...
Je voulais savoir si 1-Cette relation pouvait bloquer la mise à jour 2- Si j'ai interet à reporter les mises à jour du trigger dans une SP , mais dans ce cas comment reporter les tables INSERTED/DELETED de T1. (j'imagine éventuellement une table intermédiaire, avec l'identite, date, type action, et cause échec) ....
Merci de votre conseil.
LM
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 ********************* http://www.datasapiens.com ***********************
LuckyMan
Fred BROUARD wrote:
Un rollback n'est pas quelque chose qui se déclenche automatiquement d'ou votre confusion.
Un rollback ne peut être déclenché que par une programmation, sauf dans le cas très rare de triggers déféré (MS SQL Server ne les implémentent pas).
Donc l'échec sur table objet du trigger n'affecte pas la commande qui l'a déclenchée.
De plus les triggers MS SQL Server sont AFTER.
Je vous invite à vous former sur le sujet...
A +
C'est la confirmation dont j'avais besoin. Effectivement, je révise; mais parfois même les manuels laissent des doutes et dans le doute je préfère avoir l'avis judicieux d'un membre de ce NG.
Merci encore,
LM
Fred BROUARD wrote:
Un rollback n'est pas quelque chose qui se déclenche automatiquement
d'ou votre confusion.
Un rollback ne peut être déclenché que par une programmation, sauf
dans le cas très rare de triggers déféré (MS SQL Server ne les
implémentent pas).
Donc l'échec sur table objet du trigger n'affecte pas la commande qui
l'a déclenchée.
De plus les triggers MS SQL Server sont AFTER.
Je vous invite à vous former sur le sujet...
A +
C'est la confirmation dont j'avais besoin. Effectivement, je révise; mais
parfois même les manuels laissent des doutes et dans le doute je préfère
avoir l'avis judicieux d'un membre de ce NG.
Un rollback n'est pas quelque chose qui se déclenche automatiquement d'ou votre confusion.
Un rollback ne peut être déclenché que par une programmation, sauf dans le cas très rare de triggers déféré (MS SQL Server ne les implémentent pas).
Donc l'échec sur table objet du trigger n'affecte pas la commande qui l'a déclenchée.
De plus les triggers MS SQL Server sont AFTER.
Je vous invite à vous former sur le sujet...
A +
C'est la confirmation dont j'avais besoin. Effectivement, je révise; mais parfois même les manuels laissent des doutes et dans le doute je préfère avoir l'avis judicieux d'un membre de ce NG.