Welcome to Sign in | Help

Re: o problema de update

  •  07-31-2007, 5:11 PM

    Re: o problema de update

    Citat

    "Am scris functia care imi returneaza caracteruul de care am nevoie pt fiecare inregistrare in parte in conformitate cu cerintele beneficiarului si functioneaza corect cand este folosita intr-un cursor care ia pe rand fiecare inregistrare din tabel insa daca incerc sa o rulez direct pe toate inregistrarile imi da eroare ..."

     Asa cum ai zis si tu eroarea apare pt. ca modifici valorile din campul C4 (asa cel putin am inteles din ce ai scris in mesajul anterior), aceste modificari ducând la apariţia unor valori duplicat in indexul care admite doar VALORI UNICE C1+C2+C3+C4.

     
    Pentru a evita aceasta eroare poti proceda astfel:

    ALTER TABLE Tabel ALTER COLUMN c3 VARCHAR(36)
    UPDATE Tabel SET c3 = newid()

    ... aici rulezi scriptul tau pentru toate inregistrarile ...

    UPDATE Tabel SET c3 = NULL

     Explicatii:

    [1] Poti utiliza câmpul C3 într-un mod util dacă tot urmează să "ştergi" valorile acestui camp. Astfel defineşti C3 (de exemplu) de tip VARCHAR cu o dimensiune de 36 de caractere pentru a putea stoca GUIDuri. Valorile tip GUID au proprietatea de a fi unice cel puţin la nivelul aceluiaşi sistem de calcul/calculator (teoretic).

    Având valori UNICE în campul C3 atunci ÎN MOD DIRECT indexul cu valori UNICE C1+C2+C3+C4 va avea perechi de valori (C1+C2+C3+C4) UNICE. Ca atare, orice valori vei avea in C4 indexul va respecta în permanenţă restricţia de a avea valori unice(mai corect perechi de valori pentru ca este un index compus şi nu un index simplu) CREATE UNIQUE INDEX ...

    [2] Incarci GUIDuri unice in C3 din tabela.

    [3] Rulezi script-ul scris de tine

    [4] "Ştergi" valorile (mai precis GUIDurile) din câmpul C3 cu ajutorul unei comenzi UPDATE ... C3 = NULL

     

     

View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems