powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / заполняемый автоматически столбец
12 сообщений из 37, страница 2 из 2
заполняемый автоматически столбец
    #40002336
kvazar1977
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сформулирую прямую просьбу

есть столбец sql, типа = 1/1/1900 23:45:45

как триггеру after insert привести значение в формат 24/09/2020 23:45:45, т. е. заменить нулевую дату на текущую?
...
Рейтинг: 0 / 0
заполняемый автоматически столбец
    #40002341
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через строку или через функции даты-времени.
...
Рейтинг: 0 / 0
заполняемый автоматически столбец
    #40002345
kvazar1977
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич, можно ли конкретную инструкцию, смысл я понимаю
просто 1 строку изменения
...
Рейтинг: 0 / 0
заполняемый автоматически столбец
    #40002347
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kvazar1977
Гавриленко Сергей Алексеевич, можно ли конкретную инструкцию, смысл я понимаю
просто 1 строку изменения


Код: sql
1.
2.
3.
4.
declare
    @from   datetime = '1/1/1900 23:45:45'

select [to] = dateadd( dd, datediff(dd, '19000101', getdate()), @from )



И да, в вашем случае нужен не after-триггер, а instead of.
...
Рейтинг: 0 / 0
заполняемый автоматически столбец
    #40002361
kvazar1977
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
https://techarks.ru/qa/sql/trigger-dlya-obnovleniya-stolb-AW/

у меня почти тоже самое, но

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE TRIGGER [dbo].[DealInsert]
ON [dbo].[AllDeals]
AFTER INSERT
AS 
BEGIN   
    SET NOCOUNT ON;
    -- update your table, using a set-based approach
    -- from the "Inserted" pseudo table which CAN and WILL
    -- contain multiple rows!
    UPDATE [dbo].[AllDeals] 
    SET  [DateTorg] = dateadd( dd, datediff(dd, '19000101', getdate()), i.TimeTorg ) 
    FROM Inserted i
    WHERE id = i.id
END
GO



но почему то не работает

Модератор: Вложение удалено.

Модератор: Тут был скриншот с подсветкой в синтаксисе приведенного триггера
...
Рейтинг: 0 / 0
заполняемый автоматически столбец
    #40002364
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имею сказать следующее:

1. Вы партизан. "Но почему то не работает" -- "догадайся, мол, сама" что бы это могло значить.
2. Вы делаете дохрена неэффективно и не слушаете, что вам советуют. В вашем решении записи сначала физически вставляются, потом еще и физически апдейтятся. Триггер instead of позволяет сразу вставить измененные значения.
3. Для человека, который хочет разобраться, вы сильно много игнорируете банальный синтаксис и примеры хелпа. Ваш запрос должен выглядеть примерно вот так:
Код: sql
1.
2.
3.
4.
    UPDATE a set
       a.[DateTorg] = dateadd( dd, datediff(dd, '19000101', getdate()), i.TimeTorg ) 
    FROM [dbo].[AllDeals] a
    inner join Inserted i on a.id = i.id
...
Рейтинг: 0 / 0
заполняемый автоматически столбец
    #40002365
kvazar1977
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот так выполняется, только не понимаю, он должен постоянно выполняться или нет...

Модератор: Вложение удалено.

Модератор: Тут был скриншот про 32 секунды выполнения команды create trigger
...
Рейтинг: 0 / 0
заполняемый автоматически столбец
    #40002366
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kvazar1977
вот так выполняется, только не понимаю, он должен постоянно выполняться или нет...
Нет, просто выполняется команда создания триггера, которая чего-то ждет. Например, sch-m на таблицу.
...
Рейтинг: 0 / 0
заполняемый автоматически столбец
    #40002371
kvazar1977
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич, триггер создан
USE [db_algotrade]
GO
/****** Object: Trigger [dbo].[DealsInsert] Script Date: 24.09.2020 23:36:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- create a new trigger
ALTER TRIGGER [dbo].[DealsInsert]
ON [dbo].[AllDeals]
instead of insert
AS
BEGIN
SET NOCOUNT ON;
-- update your table, using a set-based approach
-- from the "Inserted" pseudo table which CAN and WILL
-- contain multiple rows!
UPDATE a set
a.[DateTorg] = dateadd( dd, datediff(dd, '19000101', getdate()), i.TimeTorg )
FROM [dbo].[AllDeals] a
inner join Inserted i on a.id = i.id
END

теперь когда включаю экспорт ODBC записи не приходят...
...
Рейтинг: 0 / 0
заполняемый автоматически столбец
    #40002372
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kvazar1977,

В триггере instead of insert надо делать insert, если вы хотите, чтобы записи вставились.
...
Рейтинг: 0 / 0
заполняемый автоматически столбец
    #40002437
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уже до триггеров дошли... Жесть какая-то...
Код: sql
1.
alter table ... add TimeColumn as cast('1900' as datetime) + cast(cast(DateColumn as time) as datetime)
...
Рейтинг: 0 / 0
заполняемый автоматически столбец
    #40002738
kvazar1977
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
CREATE TRIGGER [dbo].[DealsInsert1]
ON [dbo].[AllDeals]
instead of insert
AS 
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

INSERT INTO AllDeals(Num, Security, Price, Quantity, Operation, DateTorg)
SELECT Num, Security,Price, Quantity, Operation, CAST(getdate() AS datetime) + CAST(TimeTorg AS datetime)
FROM INSERTED
END
GO



так работает, в итоге я получил поле нужного типа в access, спасибо.
...
Рейтинг: 0 / 0
12 сообщений из 37, страница 2 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / заполняемый автоматически столбец
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]