SQL. Funkcja trigger i update.

SQL. Funkcja trigger i update.
PR
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 3 lata
  • Postów:3
0

Witam, w mojej bazie po dodaniu całego wiersza, zostawiam w nim jedną komórkę pustą, czyli ma wartość null. Chcę aby trigger w bazie po dodaniu nowego wiersza, automatycznie wpisywał w tą jedną wolną komórkę aktualną datę i godzinę.
Udało mi się napisać poniższy skrypt, niestety nie wprowadza on żadnych zmian. Nie widzę też żadnego komunikatu.

Kopiuj
USE [Instalacja__dozowania_spirytusu]
GO
/****** Object:  Trigger [dbo].[wpisz_aktualna_godzine]    Script Date: 2020-08-11 18:40:07 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER TRIGGER [dbo].[wpisz_aktualna_godzine]
   ON  [dbo].[Raporty]
   AFTER INSERT
AS 
BEGIN
	SET NOCOUNT ON;

	update Raporty
	set czas_zakonczenia_operacji= CURRENT_TIMESTAMP
	where
	czas_zakonczenia_operacji in
	(select  czas_zakonczenia_operacji from Raporty where czas_zakonczenia_operacji IS NULL)
	
	
END
edytowany 2x, ostatnio: cerrato
PR
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 3 lata
  • Postów:3
0

Wróciłem do prostszej wersji która wcześniej nie działała, musiałem mieć jakiś błąd.
Ten skrypt działa, nie wklejam zbędnej całości kodu

Kopiuj
update Raporty
	set czas_zakonczenia_operacji= CURRENT_TIMESTAMP
	where
	czas_zakonczenia_operacji IS NULL
edytowany 1x, ostatnio: prolaky
cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:dzień
  • Lokalizacja:Poznań
  • Postów:8802
20

Ale po co robisz to na triggerze? Ja bym raczej dał kolumnę typu timestamp z ustawionym default na CURRENT_TIMESTAMP. W ten sposób silnik bazy danych będzie się martwić, co i jak wpisać do tej kolumny.

DEFAULT CURRENT_TIMESTAMP means that any INSERT without an explicit time stamp setting uses the current time. Likewise, ON UPDATE CURRENT_TIMESTAMP means that any update without an explicit timestamp results in an update to the current timestamp value.


Zobacz pozostałe 14 komentarzy
cerrato
a bes to już nie zauważyłeś? :P
MasterOf
nie, pewnie musiałeś dodać teraz, że to niby tak specjalnie :D
cerrato
Otusz nie, było tak od początku.
MasterOf
no proof no glory
somekind
@cerrato: jedna czwarta stulecia nie nazywa się kwartał.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.