SQL Server Delete
https://ask.chadgpt.ru/share/ca0f14c0-5b36-4f36-8762-0f4d76aff440
Переименовать столбец Modified в Created:
EXEC sp_rename 'YourTable.Modified', 'Created', 'COLUMN';
--------------------------------
Если столбца ещё нет:
ALTER TABLE YourTable
ADD Created DATETIME2 NOT NULL DEFAULT SYSDATETIME();
--------------------------------
Если он уже есть, но без дефолта:
ALTER TABLE YourTable
ADD CONSTRAINT DF_YourTable_Created DEFAULT SYSDATETIME() FOR Created;
---------------------------------
Для проверки реализуйте простой тест:
INSERT INTO YourTable (OtherField1, OtherField2)
VALUES ('value1', 'value2');
SELECT * FROM YourTable WHERE OtherField1 = 'value1';---------------------------------Пример вставки — теперь без указания дат:INSERT INTO [dbo].[TestTable2] ([DataInt], [DataChar])
VALUES (101, N'Первая запись'), (202, N'Вторая запись');
--------------------------------Процедура для count и триггера update
CREATE PROCEDURE dbo.CreateStandardTable
@TableName NVARCHAR(128),
@IdType NVARCHAR(10) = N'int'
AS
BEGIN
SET NOCOUNT ON;
-- Проверьте существование таблицы
IF EXISTS (
SELECT * FROM sys.tables WHERE name = @TableName AND schema_id = SCHEMA_ID('dbo')
)
BEGIN
RAISERROR(N'Таблица %s уже существует.', 16, 1, @TableName);
RETURN;
END
-- Собираем динамический SQL для создания таблицы
DECLARE @sql NVARCHAR(MAX);
SET @sql = N'CREATE TABLE [dbo].[' + @TableName + N'] (
[ID] ' + @IdType + N' IDENTITY(1,1) NOT NULL PRIMARY KEY,
[Created] DATETIME2 NOT NULL CONSTRAINT DF_' + @TableName + N'_Created DEFAULT (SYSDATETIME()),
[Modified] DATETIME2 NOT NULL CONSTRAINT DF_' + @TableName + N'_Modified DEFAULT (SYSDATETIME())
);
';
-- Выполняем создание таблицы
EXEC sp_executesql @sql;
-- Создаём триггер для автоматического обновления Modified
DECLARE @trgSql NVARCHAR(MAX);
SET @trgSql = N'
CREATE TRIGGER [TRG_' + @TableName + N'_Modified]
ON [dbo].[' + @TableName + N']
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
UPDATE t
SET Modified = SYSDATETIME()
FROM [dbo].[' + @TableName + N'] t
INNER JOIN inserted i ON t.ID = i.ID;
END;
';
EXEC sp_executesql @trgSql;
END
Комментариев нет:
Отправить комментарий