Wyzwalacz w Sql server

Odpowiedz Nowy wątek
2020-02-14 10:40

Rejestracja: 3 miesiące temu

Ostatnio: 13 godzin temu

0

Witam,
gdy tworze wyzwalacz nie wyskakują żadne błędy, ale gdy chce za pomocą polecenia INSERT INTO wprowadzić dane do tej tabeli i sprawdzić efekt działania wyzwalacza wyskakuje błąd. Czy ktoś jest w stanie zdiagnozować kłopot ?
Poniżej umieszczam wyzwalacz, a błędy i struktura tabeli będą w zdjęciu pokazane

CREATE TRIGGER XYZ on [REŻYSER]
FOR INSERT 
AS DECLARE @id_rezyser INT,
           @imię VARCHAR(50),
       @nazwisko VARCHAR(50),
       @wzrost INT,
       @data_urodzenia DATE, 
       @id_film INT;
    SELECT @id_rezyser = ins.id_rezyser FROM INSERTED ins;
SELECT @imię = ins.imię FROM INSERTED ins;
SELECT @nazwisko = ins.nazwisko FROM INSERTED ins;
SELECT @wzrost = ins.wzrost FROM INSERTED ins;
SELECT @data_urodzenia = ins.data_urodzenia FROM INSERTED ins;
SELECT @id_film = ins.id_film FROM INSERTED ins;
  IF UPDATE(wzrost)
BEGIN
     SET @wzrost = 'Modyfikacja wzrostu'
END
 IF UPDATE(nazwisko)
BEGIN
      SET @nazwisko = 'Modyfikacja nazwiska'
END
INSERT INTO [REŻYSER]( 
       [id_rezyser]
      ,[imię]
      ,[nazwisko]
      ,[wzrost]
      ,[data_urodzenia]
      ,[id_film])
VALUES (@id_rezyser,
        @imię,
    @nazwisko,
    @wzrost,
    @data_urodzenia,
    @id_film);
PRINT 'Świetnie.'
GO

screenshot-20200214103824.png
screenshot-20200214103850.png

Rozumiem, że jest to błąd w konwersji, ale nie wiem zbytnio skąd jak wszędzie mam int przy kolumnie wzrost

edytowany 1x, ostatnio: cerrato, 2020-02-14 10:48

Pozostało 580 znaków

2020-02-14 10:46

Rejestracja: 7 lat temu

Ostatnio: 2 godziny temu

0

Nie czytałem kodu, ale takie rzeczy się debugguje normalnie. Wiem, że w SSMS ta funkcjonalność została bezsensownie usunięta, ale w Visual Studio jest i działa.

Pozostało 580 znaków

2020-02-14 11:04

Rejestracja: 3 lata temu

Ostatnio: 8 godzin temu

0

Masz jak byk napisane w czym rzecz. Wproadzasz do zmiennej typu int wartość varchar.

 @wzrost INT,
   SET @wzrost = 'Modyfikacja wzrostu'
edytowany 2x, ostatnio: BlackBad, 2020-02-14 11:05

Pozostało 580 znaków

2020-02-14 11:28

Rejestracja: 3 miesiące temu

Ostatnio: 13 godzin temu

0

A z tym błędem też jest takie błache rozwiązanie ?
screenshot-20200214112753.png
Dodam, że nie istenie id_20 w Reżyszerze

edytowany 1x, ostatnio: mactab, 2020-02-14 11:30

Pozostało 580 znaków

2020-02-14 11:30

Rejestracja: 7 lat temu

Ostatnio: 2 godziny temu

1

Jak nie znasz angielskiego to jest jeszcze Google Translator.
I unikaj polskich znaków w identyfikatorach, nawet jeśli język na to pozwala.

Próbujesz dwa razy dodać rekord z tym samym id. Trigger się wywala i robi rollback, dlatego wydaje Ci się że 20 nie ma.

edytowany 1x, ostatnio: Saalin, 2020-02-14 11:32

Pozostało 580 znaków

2020-02-14 11:32

Rejestracja: 3 lata temu

Ostatnio: 8 godzin temu

0
mactab napisał(a):

Dodam, że nie istenie id_20 w Reżyszerze

Mimo wszystko sprawdź raz jeszcze i później jeszcze raz. Bo według bazy jednak istnieje.

Pozostało 580 znaków

2020-02-14 11:32

Rejestracja: 3 miesiące temu

Ostatnio: 13 godzin temu

0

Wg tego co rozumiem błąd dotyczy ponownego duplikatu klucza o numerze 20. Tylko, że w tabeli nie mam tego wiersza
screenshot-20200214113251.png

Pozostało 580 znaków

2020-02-14 11:37

Rejestracja: 3 lata temu

Ostatnio: 8 godzin temu

0

Czy ID_rezyser nie jest auto increment ? Znaczy Identity(1,1) ? W sensie sam nadajesz ID czy są nadawane przez bazę ?

Pozostało 580 znaków

2020-02-14 11:42

Rejestracja: 3 miesiące temu

Ostatnio: 13 godzin temu

0

Wydaje mi się, że nie mam, ale dla upewnienia wrzucam zdjęcie czy to chodzi o to dokladnie ?
screenshot-20200214114227.png

Pozostało 580 znaków

2020-02-14 11:44

Rejestracja: 3 lata temu

Ostatnio: 8 godzin temu

0

Wyświetl co jest w tablicy Inserted.

Pozostało 580 znaków

2020-02-14 11:47

Rejestracja: 3 miesiące temu

Ostatnio: 13 godzin temu

0

Nie wiem czy o to Tobie chodziło, nie zrozumiałem dobrze twojej odpowiedzi
screenshot-20200214114721.png

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0