Question

J'ai trois rangées dans la base de données de ces deux sont identiques.Sorti de ces deux mêmes lignes, je dois apporter des modifications à l'une à l'aide du Sybase.ex.

Row1: ABC 456 ancient block
Row2: ABC 456 ancient block
Row3: DEF 678 class   block

Je dois apporter des modifications dans l'un des deux premiers blocs en modifiant ABC en XYZ.Si il n'y a que deux blocs identiques, alors je fais la méthode ci-dessous.

begin transaction AA
set rowcount 1
update table 
set col1 = XYZ
where col1 = ABC
commit transaction AA
set rowcount 0

Il est facile s'il y a deux lignes identiques, mais si deux identiques et une autre, Sybase choisit la ligne unique et la met à jour.Quelqu'un peut-il dire comment résoudre ce problème de trois rangées? J'utilise aseisql pour la Sybase.

Était-ce utile?

La solution

Avez-vous essayé:

update top 1 table 
set col1 = XYZ
where col1 = ABC

Autres conseils

C'est la solution que j'ai pensée.

begin transaction a
set rowcount 2
update table 
set col1 = XYZ
where col4 = block

commit transaction a
set rowcount 0

Il mettra à jour l'une des lignes en double et la ligne unique.Ensuite, je mettrai à jour la ligne unique à sa valeur d'origine séparément à l'aide de l'instruction de mise à jour.Je connais son bruit brut mais personne n'a répondu de manière satisfaisante.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top