Witam, pytanie pewnie banalne ale proszę o wyrozumiałość
próbuje stworzyć prostego triggera który by sprawdzał przy zakładaniu kartoteki czy pole symbol już występuje w bazie tylko cały czas otrzymuje komunikat że symbol istnieje chociaż wiem że nie. Poniżej coś co udało mi sie stworzyć:
PS. oczywiście chodzi o pole twr_katalog (w przykładzie symbol bo testowałem i tak mi sie przekopiowało)
Create TRIGGER symbol
ON cdn.TwrKarty
FOR UPDATE
AS
SET NOCOUNT ON
IF EXISTS(
SELECT * FROM inserted i
RIGHT JOIN cdn.TwrKarty t
ON t.twr_nazwa = i.twr_nazwa
)
BEGIN
RAISERROR('Istnieje towar o takim symbolu.', 16, 1)
RETURN
END
Ostatnio zmieniony 15 gru 2011, 12:32 przez max, łącznie zmieniany 1 raz.
Create TRIGGER symbol
ON cdn.TwrKarty
FOR UPDATE
AS
SET NOCOUNT ON
IF EXISTS(
SELECT * FROM inserted i
RIGHT JOIN cdn.TwrKarty t
ON t.twr_nazwa = i.twr_nazwa
where i.twr_gidnumer!=t.twr_gidnumer
)
BEGIN
RAISERROR('Istnieje towar o takim symbolu.', 16, 1)
RETURN
END
Wielkie dzięki znowu się czegoś więcej nauczyłem. masz piwko
a mam jeszcze pytanie odnośnie poniższego triggerka: blokuje on dostęp do CDN dwóch operatorów z jednego komputera. Trigger działa tylko wywala błedy (ale nie otworzy modułu) czy tak może być czy raczej to jest szkodliwe dla bazy?
TRIGGER sesja
ON cdn.sesje
FOR insert
AS
SET NOCOUNT ON
IF EXISTS(SELECT
*
FROM inserted i
JOIN cdn.Sesje t
ON i.ses_sesjaID!=t.ses_sesjaID
where t.SES_Aktywna = (
SELECT
[SES_Komputer]
FROM [CDNXL_szkolenie].[CDN].[Sesje]
where SES_Aktywna = 0
group by SES_Aktywna,
[SES_Komputer]
HAVING count(ses_komputer) = 2)
)
BEGIN
RAISERROR('aktywna sesja.', 16, 1)
RETURN
END
Po pierwsze sprawdź co się stanie jak dostaniesz błąd - w sensie czy XL ustawi nowo tworzoną sesję na zakończoną, na aktywną, czy na przerwaną. Po drugie sam trigger jest błędny (int = varchar ? )