powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как создать триггер, который проверяет запись на уникальность
20 сообщений из 20, страница 1 из 1
Как создать триггер, который проверяет запись на уникальность
    #39611683
cglcz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как создать триггер, который проверяет, чтобы у каждого клиента не было открыто в одной валюте более одного банковского счета.
Таблица:

CREATE TABLE Account (
account_number bigint NOT NULL,
c_identification_code bigint NOT NULL,
account_type varchar (10) NOT NULL CHECK (account_type IN ('salary', 'depositary')),
currency char (3) CHECK (currency IN ('UAH', 'USD', 'EUR')),
opening_an_account date NOT NULL,
account_balance money NOT NULL DEFAULT 0.00,
snapshot_date date,
PRIMARY KEY (snapshot_date, account_number),
FOREIGN KEY (c_identification_code) REFERENCES Сustomers (identification_code))
...
Рейтинг: 0 / 0
Как создать триггер, который проверяет запись на уникальность
    #39611700
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нафига проверять? нафига триггер? уникальный индекс на (юзер, валюта) гарантированно исключит появления второй записи у юзера в той же валюте.
...
Рейтинг: 0 / 0
Как создать триггер, который проверяет запись на уникальность
    #39611703
cglcz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, так поставлена задача
...
Рейтинг: 0 / 0
Как создать триггер, который проверяет запись на уникальность
    #39611705
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cglcz,

проще всего создать уникальный индекс по этим полям.
Это будет эффективнее триггера.
Можно и констрейнт UNIQUE. Но и в этом случае сервер автоматически создаст уникальный индекс.
...
Рейтинг: 0 / 0
Как создать триггер, который проверяет запись на уникальность
    #39611708
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cglczAkina, так поставлена задачаПокажите, что вы уже сделали.
...
Рейтинг: 0 / 0
Как создать триггер, который проверяет запись на уникальность
    #39611712
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cglczКак создать триггер, который проверяетА теперь по буквам.
Триггер по факту выполнения неких действий с данными выполняет некие действия либо дополнительно к тем, которые вызвали его срабатывание, либо вместо них.
А вот к какой заднице прилепить "проверку"? ну проверили... дальше-то что?
...
Рейтинг: 0 / 0
Как создать триггер, который проверяет запись на уникальность
    #39611738
Фотография Дедушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

ну поставили человеку такую задачу, чего упираться то? :)
исходя из постановки, если пытаются добавить в таблицу счёт, а у клиента уже есть,
то выводить сообщение об ошибке.
делов то...
...
Рейтинг: 0 / 0
Как создать триггер, который проверяет запись на уникальность
    #39611754
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДедушкаAkina,

ну поставили человеку такую задачу, чего упираться то? :)
исходя из постановки, если пытаются добавить в таблицу счёт, а у клиента уже есть,
то выводить сообщение об ошибке.
делов то...Можно не добавлять только "неправильные" счета, можно вообще отменить всю вставку, возможны и другие варианты.
Кроме того, и в случае апдейта тоже придётся проверять.
В общем, не хватает ясности в постановке.
И всё-таки, cglcz, требуется для вас придумать постановку задачи и решить её "под ключ"
или поправить какое-то ваше решение и реализацию? В таком случае покажите её нам.
...
Рейтинг: 0 / 0
Как создать триггер, который проверяет запись на уникальность
    #39611768
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
ALTER TRIGGER [dbo].[trg] ON [dbo].[Account]
FOR instead of INSERT
as
begin
	if exists
	(
		select 1 from Account a inner join inserted i 
		on a.c_identification_code = i.c_identification_code  
		and a.account_type = i.account_type 
		and a.currency = i.currency
	)
	begin
		select 'Мама, этот поц хочет второй счёт, что делать?'
	end
end
...
Рейтинг: 0 / 0
Как создать триггер, который проверяет запись на уникальность
    #39611773
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шыфл,

FOR = AFTER

FOR INSTEAD OF - такого не бывает
...
Рейтинг: 0 / 0
Как создать триггер, который проверяет запись на уникальность
    #39611854
cglcz,

а чем уникальный индекс не подходит?
...
Рейтинг: 0 / 0
Как создать триггер, который проверяет запись на уникальность
    #39611855
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гость, проходящий мимоcglcz,

а чем уникальный индекс не подходит?Тем, что препод лабу не засчитает.
...
Рейтинг: 0 / 0
Как создать триггер, который проверяет запись на уникальность
    #39611860
cglcz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CREATE TRIGGER [dbo].[trg] ON [dbo].[Account]
FOR INSERT, UPDATE
as
begin
if exists
(
select 1 from Account a inner join inserted i
on a.c_identification_code = i.c_identification_code
and a.account_type = i.account_type
and a.currency = i.currency
)
begin
select 'Error'
end
end

пока вот такой набросок получился, но подчеркивает красным всю первую строку
CREATE TRIGGER [dbo].[trg] ON [dbo].[Account]
...
Рейтинг: 0 / 0
Как создать триггер, который проверяет запись на уникальность
    #39611865
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cglczно подчеркивает красным всю первую строкуПеред ней в окне ничего нет?
...
Рейтинг: 0 / 0
Как создать триггер, который проверяет запись на уникальность
    #39611882
xenix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cglcz,
так у Вас наверное уже есть такой триггер
Код: sql
1.
2.
3.
4.
5.
IF OBJECT_ID(N'[dbo].[trg]',N'TR')IS NOT NULL
  DROP TRIGGER [dbo].[trg];
GO
CREATE TRIGGER [dbo].[trg]
......
...
Рейтинг: 0 / 0
Как создать триггер, который проверяет запись на уникальность
    #39611888
cglcz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xenix,
нет, точно нету
...
Рейтинг: 0 / 0
Как создать триггер, который проверяет запись на уникальность
    #39611892
cglcz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
все получилось, всем спасибо за помощь)
...
Рейтинг: 0 / 0
Как создать триггер, который проверяет запись на уникальность
    #39611905
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cglczвсе получилось, всем спасибо за помощь)

я канешно дико извеняюсь НО какой тайный смысл такого триггера ?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE TRIGGER [dbo].[trg] ON [dbo].[Account]
FOR INSERT, UPDATE
as
begin
	if exists
	(
	select 1 from Account a inner join inserted i 
	on a.c_identification_code = i.c_identification_code 
	and a.account_type = i.account_type 
	and a.currency = i.currency
	)
	begin
	select 'Error'
-- ну відал он вам еррор и шо дальше ? Действие произошло и осталось в таблице
	end
end
...
Рейтинг: 0 / 0
Как создать триггер, который проверяет запись на уникальность
    #39611962
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cglcz,

вы в курсе, что триггер FOR INSERT, UPDATE срабатывает после вставки/изменения?
К этому моменту записи уже вставлены!
Сравнивать inserted с таблицей бессмысленно!
Оно всегда будет давать TRUE
...
Рейтинг: 0 / 0
Как создать триггер, который проверяет запись на уникальность
    #39611963
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapcglcz,

вы в курсе, что триггер FOR INSERT, UPDATE срабатывает после вставки/изменения?
К этому моменту записи уже вставлены!
Сравнивать inserted с таблицей бессмысленно!
Оно всегда будет давать TRUEА вот рассмотреть триггер INSTEAD OF INSERT, UPDATE очень даже стоит!
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как создать триггер, который проверяет запись на уникальность
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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