mam problem z wyzwalaczami. Nie chcą po prostu działać, albo ja nie wiem jak je deklarować. Próbuje tak
CREATE TRIGGER ImieNazwisko
AFTER INSERT OF imie ON Student
BEGIN
SELECT 'TRIGGER dziala !';
END
I nico, podkreśla większość kodu. Co jest nie tak? Dodatkowo jak wejdę ręcznie w wyzwalacze i dam nowy wyzwalacz, dostanę kod, przerobię go
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date:
-- Description:
-- =============================================
CREATE TRIGGER dbo.test
ON dbo.Student
AFTER INSERT,DELETE,UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for trigger here
END
GO
Jest ok. Tworzę nowy zapytanie, sklejam dokładnie ten sam kod i mi podkreśla linijkę
ON dbo.Student
Wie ktoś o co chodzi? To wygląda tak jakby nie wiedział gdzie umieścić wyzwalacz a ręcznie wybrany z drzewka wie gdzie umieścić.
Kod tego drugiego wyzwalacza wydaje się być poprawny. Jeśli tak jest, to po naciśnięciu przycisku Execute pojawi się informacja “Command(s) completed successfully.”, a jeśli tak nie jest, to powinny pojawić się jakieś komunikaty błędów.
Chodzi o to że pojawia się komunikat że jest ok ale jeśli wejdę w bazę->Tables->dbo.Tabela->Triggers-> prawoklik i New Trigger -> dostaję wzorzec -> wklejam swój kod ten drugi wyżej. Jest ok. Biorę New Query -> wklejam ten kod -> mam komunikat
Msg 8197, Level 16, State 4, Procedure test, Line 6
The object 'dbo.Student' does not exist or is invalid for this operation.
Robiłem tak ale z tym kodem 1 a jest on niepoprawny więc nic dziwnego że nie działało, a wklejając ten drugi już o tym zapomniałem -.- Głupi błąd. Teraz działa
Niekoniecznie głupi, bo nie zawsze jest to potrzebne. Jeśli wybierzesz -> ppm -> New Query i wstawisz kod tworzący wyzwalacz, ale już bez Use, to wówczas zadziała. Reasumując trzeba patrzeć dla jakiej bazy danych zostało utworzone okienko New Query (jak się najedzie na nazwę zakładki to widać to wyraźnie).
Na moje oko, to się w ogóle składni nie trzyma. Raczej tak:
CREATE TRIGGER ImieNazwisko -- najpierw piszemy, CO chcemy zrobić
ON Student -- potem, GDZIE to ma być
AFTER INSERT -- i KIEDY działać
AS -- jako
BEGIN
SELECT 'TRIGGER dziala !';
END
To że jest w cały świat to już wiem ale to była kolejna z prób, o dziwo pierwsza wersja była prawidłowa tylko że nie było use database;. Use database dodałem później ale już do którejś wersji skryptu który był zły więc nadal nie działało. Teraz wszystko działa i robi to co chciałem Przetwarza wprowadzone imiona i nazwiska do formatu Imię Nazwisko, bez żadnych pOkEmOnIaStYcH zapisów.