
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
01.09.2002, 19:34:02
|
|||
|---|---|---|---|
|
|||
Подскажите с триггером... |
|||
|
#18+
Есть 2 таблицы (лишнее поскипано): 1. Гости CREATE TABLE H_Guest ( IdGuest int IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , IdGuestGroup int NULL , NameGuest nvarchar (100) COLLATE Cyrillic_General_CI_AS NOT NULL , PaidLimit money NOT NULL CONSTRAINT DF_H_Guest_PaidLimit DEFAULT (0), CONSTRAINT PK_H_Guest PRIMARY KEY CLUSTERED (IdGuest) ON PRIMARY , CONSTRAINT FK_H_Guest_H_GuestGroup FOREIGN KEY (IdGuestGroup) REFERENCES H_GuestGroup (IdGuestGroup) ) ON PRIMARY 2. Группы гостей CREATE TABLE H_GuestGroup ( IdGuestGroup int IDENTITY (1, 1) NOT NULL , NameGroup nvarchar (80) NOT NULL , GuestCount int NOT NULL CONSTRAINT DF_H_GuestGroup_GuestCount DEFAULT (0), PaidCount int NOT NULL CONSTRAINT DF_H_GuestGroup_PaidCount DEFAULT (0), PaidLimit money NOT NULL CONSTRAINT DF_H_GuestGroup_PaidLimit DEFAULT (0), CONSTRAINT PK_H_GuestGroup PRIMARY KEY CLUSTERED (IdGuestGroup) ON PRIMARY , ) ON PRIMARY Есть триггер: CREATE TRIGGER h_Guest_IUD ON H_Guest FOR INSERT, UPDATE, DELETE AS IF NOT UPDATE (IdGuestGroup) AND NOT UPDATE (PaidLimit) RETURN DECLARE @IdGuestGroup INT DECLARE @DeltaGuest INT, @DeltaPaid INT DECLARE @PaidLimit MONEY SET @DeltaGuest = 0 SET @DeltaPaid = 0 SET @PaidLimit = 0.0 IF EXISTS (SELECT COUNT (*) FROM INSERTED) BEGIN /* новые данные */ SELECT @IdGuestGroup = i.IdGuestGroup, @DeltaGuest = CASE WHEN i.IdGuestGroup = NULL THEN 0 WHEN i.IdGuestGroup <> NULL THEN 1 END, @DeltaPaid = CASE WHEN i.PaidLimit = 0 THEN 0 WHEN i.PaidLimit <> 0 THEN 1 END, @PaidLimit = i.PaidLimit FROM INSERTED I UPDATE H_GuestGroup SET GuestCount = GuestCount + @DeltaGuest, PaidCount = PaidCount + @DeltaPaid, PaidLimit = PaidLimit + @PaidLimit WHERE IdGuestGroup = @IdGuestGroup END IF EXISTS (SELECT COUNT (*) FROM DELETED) BEGIN /* старые данные */ SELECT @IdGuestGroup = d.IdGuestGroup, @DeltaGuest = CASE WHEN d.IdGuestGroup = NULL THEN 0 WHEN d.IdGuestGroup <> NULL THEN -1 END, @DeltaPaid = CASE WHEN d.PaidLimit = 0 THEN 0 WHEN d.PaidLimit <> 0 THEN -1 END, @PaidLimit = d.PaidLimit FROM DELETED D UPDATE H_GuestGroup SET GuestCount = GuestCount + @DeltaGuest, PaidCount = PaidCount + @DeltaPaid, PaidLimit = PaidLimit - @PaidLimit WHERE IdGuestGroup = @IdGuestGroup END При попытке привязать гостя к группе выдает сообщение типа " в поле <GuestCount> добавляется значение NULL" Объясните, плииз, откуда там NULL? С уважением, Дмитрий ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=46&mobile=1&tid=1820693]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
24ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 330ms |

| 0 / 0 |
