SQL. Funkcja trigger i update.

SQL. Funkcja trigger i update.
PR
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 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:ponad 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:około 14 godzin
  • Lokalizacja:Poznań
  • Postów:8806
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.


UglyMan
byczq? Wyczuwam jakieś niezdrowe relacje.
cerrato
Lepiej powiedz, że jesteś zazdrosny, że do Ciebie tak nie pisze :P
UglyMan
Lepiej niech w ogóle nie pisze, bo jeszcze z jakimś prosaczkiem wyjedzie i zrobi się niemiło.
cerrato
o @somekind też jesteś zazdrosny?
MasterOf
Spokojnie, mojej uwagi wystarczy dla każdego :D
somekind
Zazdrosny o pracę z SQL? To już bym wolał laguną jeździć.
KHX
Masz łapkę się naciesz :P
cerrato
podziękował ;)
somekind
A w sumie, faktycznie @cerrato coś z sensem napisał.
cerrato
To jest ten dzień. Raz na kwartał się zdarza ;)
UglyMan
@cerrato: czyli będziemy mieć spokój do końca kwartału ?
cerrato
nie, wręcz przeciwnie. Pisać będę dalej, ale (jak zazwyczaj) bes sęsu ;)
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.