Boas pessoal! acabei de assistir o vídeo, eu gostaria que me ensine a criar um Trigger no SQL-Server; por ex: imagine que a minha loja abre de 8H as 16H. Então a minha duvida e seguinte: como criar um Trigger para impedir que antes e depois de encerar o serviço nenhum registro pode ser inserido, atualizado ou deletado... ponto de interrogação
Para criar uma trigger que execute em um determinado horário no SQL Server, precisamos entender que triggers são acionadas por eventos de DML (Data Manipulation Language) como INSERT, UPDATE ou DELETE em uma tabela, e não por eventos de tempo específicos. No entanto, você pode usar o SQL Server Agent para agendar uma tarefa que execute um procedimento armazenado ou um script SQL em um horário específico, como das 8h às 16h. Aqui está um exemplo de como fazer isso: Crie um Procedimento Armazenado: Primeiro, você precisa criar um procedimento armazenado que contenha as operações que deseja executar: sql Copy code CREATE PROCEDURE MeuProcedimento AS BEGIN -- Coloque aqui as operações que deseja executar -- Exemplo: EXEC MinhaTrigger; PRINT 'Executando procedimento armazenado às ' + CONVERT(varchar, GETDATE()); END; Crie um Job no SQL Server Agent: Em seguida, você pode criar um job no SQL Server Agent para agendar a execução do procedimento armazenado. Aqui está um exemplo: sql Copy code USE msdb; GO EXEC dbo.sp_add_job @job_name = N'MeuJob', @enabled = 1, @start_step_id = 1, @notify_level_eventlog = 0, @delete_level = 0, @category_name = N'[Uncategorized (Local)]', @job_id = @job_id OUTPUT; EXEC dbo.sp_add_jobserver @job_name = N'MeuJob'; EXEC dbo.sp_add_jobstep @job_name = N'MeuJob', @step_id = 1, @step_name = N'Executar Procedimento Armazenado', @subsystem = N'TSQL', @command = N'EXEC MeuProcedimento;', @database_name = N'master', @flags = 0; EXEC dbo.sp_add_jobschedule @job_name = N'MeuJob', @name = N'ScheduleDiurno', @freq_type = 4, @freq_interval = 1, @active_start_time = 080000, @active_end_time = 160000; Neste exemplo, @active_start_time define o horário de início (8h) e @active_end_time define o horário de término (16h) para a execução do job. Depois de criar o job no SQL Server Agent, o procedimento armazenado será executado conforme agendado, no intervalo de tempo especificado. Certifique-se de que o SQL Server Agent esteja configurado e em execução para que os jobs agendados sejam executados corretamente.
Virgem sempre marcando presença 🫵
Ótima aula!
meu estava dando erro no volues e aparecia essa msg ERROR 1054:
no min 10:00
Esse erro indica que o valor atribuído não é válido, ou seja, correspondente ao campo
Boas pessoal! acabei de assistir o vídeo, eu gostaria que me ensine a criar um Trigger no SQL-Server;
por ex: imagine que a minha loja abre de 8H as 16H. Então a minha duvida e seguinte:
como criar um Trigger para impedir que antes e depois de encerar o serviço nenhum registro pode ser inserido, atualizado ou deletado... ponto de interrogação
Para criar uma trigger que execute em um determinado horário no SQL Server, precisamos entender que triggers são acionadas por eventos de DML (Data Manipulation Language) como INSERT, UPDATE ou DELETE em uma tabela, e não por eventos de tempo específicos.
No entanto, você pode usar o SQL Server Agent para agendar uma tarefa que execute um procedimento armazenado ou um script SQL em um horário específico, como das 8h às 16h. Aqui está um exemplo de como fazer isso:
Crie um Procedimento Armazenado:
Primeiro, você precisa criar um procedimento armazenado que contenha as operações que deseja executar:
sql
Copy code
CREATE PROCEDURE MeuProcedimento
AS
BEGIN
-- Coloque aqui as operações que deseja executar
-- Exemplo: EXEC MinhaTrigger;
PRINT 'Executando procedimento armazenado às ' + CONVERT(varchar, GETDATE());
END;
Crie um Job no SQL Server Agent:
Em seguida, você pode criar um job no SQL Server Agent para agendar a execução do procedimento armazenado. Aqui está um exemplo:
sql
Copy code
USE msdb;
GO
EXEC dbo.sp_add_job
@job_name = N'MeuJob',
@enabled = 1,
@start_step_id = 1,
@notify_level_eventlog = 0,
@delete_level = 0,
@category_name = N'[Uncategorized (Local)]',
@job_id = @job_id OUTPUT;
EXEC dbo.sp_add_jobserver
@job_name = N'MeuJob';
EXEC dbo.sp_add_jobstep
@job_name = N'MeuJob',
@step_id = 1,
@step_name = N'Executar Procedimento Armazenado',
@subsystem = N'TSQL',
@command = N'EXEC MeuProcedimento;',
@database_name = N'master',
@flags = 0;
EXEC dbo.sp_add_jobschedule
@job_name = N'MeuJob',
@name = N'ScheduleDiurno',
@freq_type = 4,
@freq_interval = 1,
@active_start_time = 080000,
@active_end_time = 160000;
Neste exemplo, @active_start_time define o horário de início (8h) e @active_end_time define o horário de término (16h) para a execução do job.
Depois de criar o job no SQL Server Agent, o procedimento armazenado será executado conforme agendado, no intervalo de tempo especificado. Certifique-se de que o SQL Server Agent esteja configurado e em execução para que os jobs agendados sejam executados corretamente.
Não dá pra enxergar os gatilhos. 🥲