Suppression de deux lignes en fonction de la suppression réussie d'une autre ligne basée sur une condition de colonne – Sybase

J'essaye de supprimer deux rangées basées seulement si une troisième rangée est supprimée. Maintenant, la capture ici est, la 3ème rangée a une condition où seulement pour la valeur "A" de la colonne "MAN", il devrait supprimer cette ligne correspondante.

Je le fais dans Sybase (SQL Anywhere en utilisant Interactive SQL IDE).

Je ne peux pas utiliser @@ ROWCOUNT.

Quelqu'un pourrait-il s'il vous plaît me donner la question pour cela ou comment y parvenir s'il vous plaît.

ALGORITHME:

DELETE FROM EFS O WH NAME = 'MAN' ET VAL = 'A'

If (DeleteSuccessful) {EFFACER D'EFS O WH NOM = 'MAN_1' ET NOM = 'MAN_2'}

Je veux réaliser ceci dans une seule requête dans Sybase.

APPROCHE ALTERNATIVE:

Je peux aussi penser à réaliser cela en vérifiant d'abord la valeur de la colonne VAL et si c'est XX, alors je peux écrire une requête pour supprimer les 3 lignes en utilisant WHERE NAME = 'MAN AND NAME =' MAN_1 'AND NAME =' MAN_2 ' . C'est aussi une approche. Mais ne savez pas comment le faire en utilisant la syntaxe dans Sybase dans une seule requête /

Je pense que vous devriez vérifier si ces valeurs existent et le faire dans une requête

DELETE FROM EFS WHERE (NAME='MAN' AND VAL='A') OR ( (NAME='MAN_1' AND NAME='MAN_2') AND EXISTS (SELECT * FROM EFS WHERE NAME='MAN' AND VAL='A') ) 

Je crois que vous et le valex obtenez tous les deux le résultat correct, mais votre syntaxe est un peu éteinte. Aussi préférable d'utiliser IN par rapport à OU pour la performance.

 IF EXISTS (SELECT * FROM EFS WHERE NAME='MAN' AND VAL='A') BEGIN DELETE FROM EFS WHERE NAME IN ('MAN','MAN_2','MAN_3') END 

Et, je pense que vous pouvez utiliser @@ rowcount, peut-être que vous ne considérez pas cela comme une approche unique, mais cela fonctionne aussi, par exemple

 select * from tempdb..test irecord 1 2 3 99 declare @deleted INT delete from tempdb..test where irecord = 3 select @deleted = @@rowcount if @deleted > 0 begin print 'deletion detected' delete from tempdb..test where irecord IN (1,2) end else print 'no deletion detected' 1 row(s) affected. 1 row(s) affected. deletion detected 2 row(s) affected. select * from tempdb..test irecord 99