ďťż
 
Triger w mssql ďťż
 
Triger w mssql
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

Triger w mssql



natukafszy - 11-05-2007 12:33
Triger w mssql
  Mam do napisania triger w mssql. Triger ten mam juz napisany w Firebirdzie i
chcialbym go przeniesc do MSSQL.





natukafszy - 11-05-2007 12:33

  Oto triger w firebirdzie:

CREATE TRIGGER "tabela_del" FOR 'tabela"
ACTIVE BEFORE DELETE POSITION 0
AS
DECLARE n INTEGER;
BEGIN
IF( OLD."x" IS NOT NULL AND OLD."x" != 0 ) THEN EXCEPTION "exc1";

n = NULL;
SELECT MAX("Id") FROM "tabela" INTO :n;
IF (OLD."Id" != n) THEN EXCEPTION "exc2";
END ^

Mam pytanie w jaki sposob zastapic bledy (EXCEPTION) z Firebirda na MySQL
zeby bo spelnieniu warunkow IF( OLD."x" IS NOT NULL AND OLD."x" != 0 ) i IF
(OLD."Id" != n) pole z tabeli nie zostalo usuniete a wyswietlony zostal
odpowiedni blad?

Użytkownik "natukafszy" <kusiczka22@wp.pl> napisał w wiadomości
news:f1s9v1$r4a$1@atlantis.news.tpi.pl...
> Mam do napisania triger w mssql. Triger ten mam juz napisany w Firebirdzie
> i chcialbym go przeniesc do MSSQL.
>
>
>




Bartek Dajewski - 11-05-2007 12:33

  Cześć.

Użytkownik "natukafszy" <kusiczka22@wp.pl> napisał w wiadomości
news:f1sa4d$rr2$1@atlantis.news.tpi.pl...
[...]
> Mam pytanie w jaki sposob zastapic bledy (EXCEPTION) z Firebirda na MySQL
> zeby bo spelnieniu warunkow IF( OLD."x" IS NOT NULL AND OLD."x" != 0 ) i
IF
> (OLD."Id" != n) pole z tabeli nie zostalo usuniete a wyswietlony zostal
> odpowiedni blad?

Chodzi, jak rozumiem, o usuwanie rekordu, a nie pola. Jeśli tak, to:
raiserror + rollback transaction

PS. Znajdziesz to w BOL pod hasłem "create trigger". I inne rzeczy też;
naprawdę warto poczytać...
--
Pozdrawiam :-)
Bartek




natukafszy - 11-05-2007 12:33

  Moze to ktos zakodowac tak dla przykladu dla mnie :) ?

Użytkownik "Bartek Dajewski" <bartek@UsunTo.tradiss.com.pl> napisał w
wiadomości news:f1scv0$892$1@news.onet.pl...
> Cześć.
>
> Użytkownik "natukafszy" <kusiczka22@wp.pl> napisał w wiadomości
> news:f1sa4d$rr2$1@atlantis.news.tpi.pl...
> [...]
>> Mam pytanie w jaki sposob zastapic bledy (EXCEPTION) z Firebirda na MySQL
>> zeby bo spelnieniu warunkow IF( OLD."x" IS NOT NULL AND OLD."x" != 0 ) i
> IF
>> (OLD."Id" != n) pole z tabeli nie zostalo usuniete a wyswietlony zostal
>> odpowiedni blad?
>
> Chodzi, jak rozumiem, o usuwanie rekordu, a nie pola. Jeśli tak, to:
> raiserror + rollback transaction
>
> PS. Znajdziesz to w BOL pod hasłem "create trigger". I inne rzeczy też;
> naprawdę warto poczytać...
> --
> Pozdrawiam :-)
> Bartek
>





Bartek Dajewski - 11-05-2007 12:33

  Cześć.

Użytkownik "natukafszy" <kusiczka22@wp.pl> napisał w wiadomości
news:f1vao5$5t9$1@nemesis.news.tpi.pl...
> Moze to ktos zakodowac tak dla przykladu dla mnie :) ?

Na przykład tak:

if exists (select * from deleted where x <> 0) begin
raiserror('exc1', 16, 1)
rollback transaction
end
else
if (select max(id) from deleted) < (select max(id) from tabela) begin
raiserror('exc2', 16, 1)
rollback transaction
end

Zwróć też uwagę, że pseudo tabela deleted zawiera wszystkie usuwane
rekordy, za to nie widać ich już w tabeli. Jest to więc coś na kształt
"after delete" z możliwością wycofania transakcji.
Przy okazji: sprawdzanie "x is not null and x <> 0" jest nadmiarowe.
Wystarczy "x <> 0".

--
Pozdrawiam :-)
Bartek
PS. Wycinaj proszę niepotrzebne cytaty i odpowiadaj pod treścią
poprzednika.




Bartek Dajewski - 11-05-2007 12:33

  Cześć.

Użytkownik "Bartek Dajewski" <bartek@UsunTo.tradiss.com.pl> napisał w
wiadomości news:f1vjk0$5fu$1@news.onet.pl...
[...]
> if (select max(id) from deleted) < (select max(id) from tabela) begin

Powinno być raczej:
if (select min(id) from deleted) < (select max(id) from tabela) begin

--
Pozdrawiam :-)
Bartek
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Zdalny =?ISO-8859-2?Q?dost=EAp_do_MSSQL_bez_zarz=B1dzani?==?ISO-8859-2?Q?a?= [MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?= [MSSQL 2k] - jak =?ISO-8859-2?Q?pod=B3=B1czy=E6_serwer_na_?==?ISO-8859-2?Q?porcie_innym_ni=BF_1433=3F?= MSSQL Express czy Oracle Express MSSQL 2005 i uruchamianie procedury o =?ISO-8859-2?Q?okre=B6lone?==?ISO-8859-2?Q?j_godzinie?= [MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?= [MSSQL 2000] =?ISO-8859-2?Q?wywo=B3anie_procesu_z_poziomu_?==?ISO-8859-2?Q?job=27a?= [MSSQL 2K] =?ISO-8859-2?Q?Wp=B3yw_ustawie=F1_regionalnych_?==?ISO-8859-2?Q?serwera_na_zapytania?= Pobierananie danych z innej bazy danych w MSSQL Migracja MSSQL 2005 CTP na 2005 Express
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • bajkomoda.xlx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com