Есть простая таблица, туда вносится запись. Одно из полей может быть как 1 так И 0. По новым условиям должно быть только 0. Пытался зделать триггер типа:
CREATE TRIGGER [dbo].[tr_restricted_csa]
ON [dbo].[OnBoard_Shp_Restrictions]
ON INSERT
AS
BEGIN
UPDATE [dbo].[OnBoard_Shp_Restrictions] SET IsCSABasicsOn = 0
FROM dbo.[OnBoard_Shp_Restrictions]
WHERE OnBoard_Shp_Restrictions_ik = (SELECT ins.OnBoard_Shp_Restrictions_ik FROM inserted ins)
END
И на ON INSERT, И на AFTER INSERT, И даже INSTEAD INSERT, но строке просто на заносится в таблицу.
Где тут собака порылась?
триггер на занесение в таблицу.
-
- Уже с Приветом
- Posts: 6449
- Joined: 15 May 2003 00:04
- Location: LA
Re: триггер на занесение в таблицу.
Не должен ли внутренний select возвращать ровно одно значение? Может он больше одного возвращает.
-
- Новичок
- Posts: 64
- Joined: 26 Nov 2015 22:42
Re: триггер на занесение в таблицу.
Я всегда думал, что возвращаются те строчки, которые были внесены. Поскольку я вношу одну строку, то И должно возвращать одну. Думаю, что сдесь проблема не в скрипте, а принципиально в обработке триггера.Helmsman wrote:Не должен ли внутренний селецт возвращать ровно одно значение? Может он больше одного возвращает.
-
- Уже с Приветом
- Posts: 11019
- Joined: 15 May 2002 02:09
- Location: Boston, MA
Re: триггер на занесение в таблицу.
nestor ivanovich wrote: И на ON INSERT, И на AFTER INSERT, И даже INSTEAD INSERT, но строке просто на заносится в таблицу.
Где тут собака порылась?
строке не заносится в таблицу после того как был добавлен тригер?
до этого заносилась?
SQLServer?
структура таблицы и insert statement
в студию.
-
- Новичок
- Posts: 64
- Joined: 26 Nov 2015 22:42
Re: триггер на занесение в таблицу.
CREATE TABLE [dbo].[OnBoard_Shp_Restrictions](ie wrote:nestor ivanovich wrote: И на ON INSERT, И на AFTER INSERT, И даже INSTEAD INSERT, но строке просто на заносится в таблицу.
Где тут собака порылась?
строке не заносится в таблицу после того как был добавлен тригер?
до этого заносилась?
SQLServer?
структура таблицы и insert statement
в студию.
[OnBoard_Shp_Restrictions_ik] [int] IDENTITY(1,1) NOT NULL,
[IsAuthorityOn] [bit] NULL,
[IsCSABasicsOn] [bit] NULL,
[IsInsuranceOn] [bit] NULL,
[IsHazmat] [bit] NULL,
[IsSafety] [bit] NULL,
CONSTRAINT [PK_OnBoard_Shp_Restrictions] PRIMARY KEY CLUSTERED
(
[OnBoard_Shp_Restrictions_ik] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
ALTER PROCEDURE [dbo].[nsp_OnBoard_insertupdate_Restrictions]
@OnBoard_Shp_Restrictions_ik int
,@IsAuthorityOn bit = null
,@IsCSABasicsOn bit = null
,@IsInsuranceOn bit = null
,@IsHazmat bit = null
,@IsSafety bit = null
AS
BEGIN
SET NOCOUNT ON;
delete from OnBoard_Shp_Restrictions where OnBoard_Shp_Restrictions_ik = @OnBoard_Shp_Restrictions_ik
INSERT INTO OnBoard_Shp_Restrictions
(IsAuthorityOn
,IsCSABasicsOn
,IsInsuranceOn
,IsHazmat
,IsSafety
)
VALUES
(@IsAuthorityOn
,@IsCSABasicsOn
,@IsInsuranceOn
,@IsHazmat
,@IsSafety
)
END
Сразу скажу, код не мой. Так что код не ругайте.
-
- Уже с Приветом
- Posts: 11019
- Joined: 15 May 2002 02:09
- Location: Boston, MA
Re: триггер на занесение в таблицу.
запустил. все работает.nestor ivanovich wrote:
ALTER PROCEDURE [dbo].[nsp_OnBoard_insertupdate_Restrictions]
кагда вы тестируете надеюсь вы детаете что то типа:
select * from OnBoard_Shp_Restrictions
order by OnBoard_Shp_Restrictions_ik desc
пачиму спрашивую, процедура хоть и принимает @OnBoard_Shp_Restrictions_ik как параметер,
в реальности key будет сгенерирован сервером, так как field has identity ON.
-
- Уже с Приветом
- Posts: 15276
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: триггер на занесение в таблицу.
тогда это поле надо просто удалить, а не триггеры намыливатьnestor ivanovich wrote:Одно из полей может быть как 1 так И 0. По новым условиям должно быть только 0.
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 23804
- Joined: 05 Jul 2003 22:34
- Location: Брест -> St. Louis, MO
Re: триггер на занесение в таблицу.
Удалить может и не надо т.к. Старые единицы могут пригодиться. А вот сделать check constraint и ignore old data on creation самое оно
Лучше водки — хуже нет! ©
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
Re: триггер на занесение в таблицу.
Сделайте пустой instead of insert
Строка должна перестать вноситься
Потом сделайте там нужный insert, не update
Строка должна перестать вноситься
Потом сделайте там нужный insert, не update
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014