ďťż
 
Naruszenie zasad FK ďťż
 
Naruszenie zasad FK
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

Naruszenie zasad FK



Doker - 05-09-2007 00:21
Naruszenie zasad FK
  Mamy taka sytuacje
Tabela Uzytkownicy: id int, username varchar(max), ....
Tabela Listy: id int, id_od int, id_do
Baza MSSQL 2005
Jaja sa nastepujace.
id_do jest FK na uzytkownicy.id
Silnik bazy nie pozwala stworzyc drugiego FK dla id_od.
Silnik bazy nie pozwala umieszczac w check constraint wyrazenia select
Silnik bazy wspiera triggery ale tylko post-operacyjne, a zreszta i tak
bym chcial blad miec zgloszony zamiast dostac ciche milczenie.

Co moge zrobic?





wloochacz - 06-09-2007 00:04

  [ciach]
> Baza MSSQL 2005
> Jaja sa nastepujace.
> id_do jest FK na uzytkownicy.id
> Silnik bazy nie pozwala stworzyc drugiego FK dla id_od.
> Silnik bazy nie pozwala umieszczac w check constraint wyrazenia select
> Silnik bazy wspiera triggery ale tylko post-operacyjne, a zreszta i tak
> bym chcial blad miec zgloszony zamiast dostac ciche milczenie.
>
> Co moge zrobic?
Napisać trigger, na ten przykład...

/* Insert trigger "ti_ALM_TASK" for table "ALM_TASK" */
CREATE TRIGGER [dbo].[ti_ALM_TASK] ON [dbo].[ALM_TASK]
FOR INSERT
AS
begin

declare @numrows int
select @numrows = @@rowcount
if @numrows = 0
return
SET NOCOUNT ON
/* Restrict child "ALM_TASK" when parent "DEX_RM_USERS" insert */
if update([ID_USER_C])
begin
if ((select count(*)
from inserted i
left join [DEX_RM_USERS] t on (t.[ID_USER] = i.[ID_USER_C])
where (t.[ID_USER] = i.[ID_USER_C]) or (i.[ID_USER_C] is null))
!= @numrows)
begin
raiserror 50004 'Wartość nadrzędna nie istnieje w tabeli
[DEX_RM_USERS]. Nie mogę wstawić wartości do tabeli podrzędnej [ALM_TASK].'
rollback transaction
return
end
end
SET NOCOUNT OFF
end
GO

--
wloochacz




Doker - 06-09-2007 00:04

  wloochacz pisze:
> [ciach]
>> Baza MSSQL 2005
>> Jaja sa nastepujace.
>> id_do jest FK na uzytkownicy.id
>> Silnik bazy nie pozwala stworzyc drugiego FK dla id_od.
>> Silnik bazy nie pozwala umieszczac w check constraint wyrazenia select
>> Silnik bazy wspiera triggery ale tylko post-operacyjne, a zreszta i
>> tak bym chcial blad miec zgloszony zamiast dostac ciche milczenie.
>>
>> Co moge zrobic?
> Napisać trigger, na ten przykład...
Blee ;p no chyba trzeba ale to normalnie straszne ;)
No i trzeba on insert i on update ;/
Ale dzieki




wloochacz - 06-09-2007 00:04

  [ciach]
>>> Co moge zrobic?
>> Napisać trigger, na ten przykład...
> Blee ;p no chyba trzeba ale to normalnie straszne ;)
Ale to jest tylko propozycja, nikt Ci nie każe tak robić.

> No i trzeba on insert i on update ;/
CREATE TRIGGER [dbo].[ti_ALM_TASK] ON [dbo].[ALM_TASK]
FOR INSERT, UPDATE

Są jeszcze triggery Instead Of, he he

> Ale dzieki
No, ku..., proszę.

--
wloochacz





Doker - 06-09-2007 00:04

  > Są jeszcze triggery Instead Of, he he
Mowisz? Jakis marny artykul wprowadzil mnie wblad gdyz jego autor
twierdzil ze mssql 2005 wspiera tylko triggery post.
No teraz to you saved my day :) thx
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [PostgreSQL] Komunikaty w sytuacji naruszenia=?iso-8859-2?Q?ogranicze=F1?= kluczy ORA-02291:naruszono wiezy integralnosci Oracle blad naruszono wiezy unikatowe w kwestii naruszenia praw... [PG 8.3] - oid jako PK/FK w systemie rozproszonym. Program Polsoft FK i pliki .dbf :/ [ORACLE] Zapytanie SQL Archiwizacja MSSQL. prostokat do wycinania z plikow... W jakiej postaci wystepuje report builder for oracle?
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • ets2.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