Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » MS SQL триггер, непонятная проблема

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

bsd9



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Извините, не понял как поставить спойлер
 
Есть триггер:

Код:
 
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
 
CREATE TRIGGER [dbo].[No19Sens]  
    ON  [dbo].[SYS_DEV_DirtyData]  
    AFTER INSERT  
AS  
BEGIN  
 
    SET NOCOUNT ON;  
     
    update DD  
    SET dd.[digit_sens_num]&=~POWER(2,19-1)
    FROM inserted as i  
    inner join [dbo].[SYS_DEV_DirtyData] as dd on dd.id=i.id  
    inner join [dbo].[No19Sens_devices] as No19 on No19.device_code=i.device_code  
END
GO
 

 
И есть две таблички, собственно No19Sens_devices в которой он ищет нужную запись и SYS_DEV_DirtyData в которую идет вставка. Цель триггера, чтобы записи из таблицы No19Sens_devices попадали в SYS_DEV_DirtyData с измененными данными, в поле digit_sens_num. Проблема заключается в том, что для каких то записей это поле меняется, а для каких то нет, хотя обе записи есть в таблице No19Sens_devices. Я совершенно не знаю куда копать, надеюсь на помощь.  
 
   
 
Код этих таблиц на всякий случай
 

Код:
 
SET ANSI_NULLS ON
GO
 
SET QUOTED_IDENTIFIER ON
GO
 
SET ANSI_PADDING ON
GO
 
CREATE TABLE [dbo].[SYS_DEV_DirtyData](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [device_code] [varchar](16) NOT NULL,
    [tele_time] [datetime] NOT NULL,
    [server_time] [datetime] NOT NULL,
    [transfer_time] [datetime] NOT NULL,
    [long] [float] NULL,
    [lat] [float] NULL,
    [valid] [char](1) NULL,
    [speed] [smallint] NULL,
    [direction] [smallint] NULL,
    [height] [smallint] NULL,
    [digit_sens_num] [int] NULL,
    [analog_sens_num] [int] NULL,
    [analog_data] [float] NULL,
    [flags] [int] NULL,
 CONSTRAINT [PK_SYS_DEV_DeviceData] PRIMARY KEY CLUSTERED  
(
    [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
 
GO
 
SET ANSI_PADDING OFF
GO
 
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'долгота' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SYS_DEV_DirtyData', @level2type=N'COLUMN',@level2name=N'long'
GO
 
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'широта' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SYS_DEV_DirtyData', @level2type=N'COLUMN',@level2name=N'lat'
GO
 
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'скорость' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SYS_DEV_DirtyData', @level2type=N'COLUMN',@level2name=N'speed'
GO
 
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'направление' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SYS_DEV_DirtyData', @level2type=N'COLUMN',@level2name=N'direction'
GO
 
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'высота над уровнем моря' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SYS_DEV_DirtyData', @level2type=N'COLUMN',@level2name=N'height'
GO
 
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'номер цыфрового датчика' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SYS_DEV_DirtyData', @level2type=N'COLUMN',@level2name=N'digit_sens_num'
GO
 
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'номер аналогового датчика' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SYS_DEV_DirtyData', @level2type=N'COLUMN',@level2name=N'analog_sens_num'
GO
 
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'данные аналогового датчика' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SYS_DEV_DirtyData', @level2type=N'COLUMN',@level2name=N'analog_data'
GO
 
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Таблица данных от приборов' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SYS_DEV_DirtyData'
GO
 

 

Код:
 
SET ANSI_NULLS ON
GO
 
SET QUOTED_IDENTIFIER ON
GO
 
SET ANSI_PADDING ON
GO
 
CREATE TABLE [dbo].[No19Sens_devices](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [device_code] [varchar](16) NOT NULL,
 CONSTRAINT [PK_No19Sens_devices] PRIMARY KEY CLUSTERED  
(
    [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
 
GO
 
SET ANSI_PADDING OFF
GO
 
 


Всего записей: 29 | Зарегистр. 06-08-2014 | Отправлено: 18:23 27-12-2014 | Исправлено: bsd9, 18:28 27-12-2014
rrromano



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Предполагается, что обе таблицы заполнены данными идентично?
 
Например, что покажет select * from SYS_DEV_DirtyData where SYS_DEV_DirtyData.device_code not in (select No19Sens_devices.device_code from No19Sens_devices)?

Всего записей: 283 | Зарегистр. 20-09-2006 | Отправлено: 17:21 30-12-2014
rrromano



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кстати, триггер у вас на таблице No19Sens, а вставка происходит в таблицу SYS_DEV_DirtyData. Уточните задачу.

Всего записей: 283 | Зарегистр. 20-09-2006 | Отправлено: 10:59 31-12-2014
bsd9



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Проблема уже решилась. Там рядом был другой треггер который затирал данные. Пока работает.  
 

Цитата:
триггер у вас на таблице No19Sens

 
CREATE TRIGGER [dbo].[No19Sens]  
    ON  [dbo].[SYS_DEV_DirtyData]

Всего записей: 29 | Зарегистр. 06-08-2014 | Отправлено: 11:33 21-01-2015
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » MS SQL триггер, непонятная проблема


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru