USE master;
IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'TEST')
BEGIN
CREATE DATABASE TEST;
END;
USE TEST;
IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'TestSchema')
BEGIN
EXEC sp_executesql N'CREATE SCHEMA TestSchema';
END;
CREATE TABLE TestSchema.TestTable (
ID INT PRIMARY KEY,
Name NVARCHAR(50)
);
CREATE TABLE TestSchema.LogTable (
Operation NVARCHAR(10),
Description NVARCHAR(255),
EventTime DATETIME DEFAULT GETDATE()
);
CREATE PROCEDURE TestSchema.LogInsertTrigger
AS
BEGIN
INSERT INTO TestSchema.LogTable (Operation, Description)
VALUES ('INSERT', 'A new row is being inserted.');
END;
CREATE PROCEDURE TestSchema.LogUpdateTrigger
AS
BEGIN
INSERT INTO TestSchema.LogTable (Operation, Description)
VALUES ('UPDATE', 'A row is being updated.');
END;
CREATE TRIGGER TestSchema.BeforeInsertTrigger
ON TestSchema.TestTable
AFTER INSERT
AS
BEGIN
EXEC TestSchema.LogInsertTrigger;
END;
CREATE TRIGGER TestSchema.AfterUpdateTrigger
ON TestSchema.TestTable
AFTER UPDATE
AS
BEGIN
EXEC TestSchema.LogUpdateTrigger;
END;
INSERT INTO TestSchema.TestTable (ID, Name)
VALUES (1, 'Alice');
UPDATE TestSchema.TestTable
SET Name = 'Alice Updated'
WHERE ID = 1;
SELECT * FROM TestSchema.LogTable;