Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Тригеры  [new]
Karen__84
Member

Откуда:
Сообщений: 339
Добрый день всем .Есть таблицы create table A(int a) , create table B(int b) хочу сделать тригер на таблице B так чтобы он не допускал что-бы количество строк в B не привышал количеству строк в A . Я пишу так

create Trigger TT on B
for Insert
as
declare @cA int ;
declare @cB int ;
select @cA = count() from A
select @cB = count() from B

if(@cB >= @cA)
rollback

go
22 июн 11, 12:50    [10853425]     Ответить | Цитировать Сообщить модератору
 Re: Тригеры  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
В чем вопрос то?
22 июн 11, 12:55    [10853498]     Ответить | Цитировать Сообщить модератору
 Re: Тригеры  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Ваши запросы синтаксически неверны.
22 июн 11, 12:56    [10853514]     Ответить | Цитировать Сообщить модератору
 Re: Тригеры  [new]
Karen__84
Member

Откуда:
Сообщений: 339
как правильно написать
22 июн 11, 12:57    [10853527]     Ответить | Цитировать Сообщить модератору
 Re: Тригеры  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Karen__84
как правильно написать
В хелпе есть синтаксис и примеры. Даже с агрегатными функциями.
Ну и потом, начиная с какой-то версии сервера, откат транзакции в триггере будет генерировать ошибку.
22 июн 11, 12:59    [10853547]     Ответить | Цитировать Сообщить модератору
 Re: Тригеры  [new]
Andrey Sribnyak
Member

Откуда: Киев
Сообщений: 600
Как-то так...
use test
go
if OBJECT_ID ('t1') is not null
	drop table t1
go	
create table t1 (id int)
go

if OBJECT_ID ('t2') is not null
	drop table t2
go	
create table t2 (id int)
go

create trigger tt on t2 
INSTEAD OF insert
as
declare @c1 int, @c2 int
	select @c1= COUNT(*) from dbo.t1 WITH(SERIALIZABLE)
	select @c2=COUNT(*) from dbo.t2 WITH(SERIALIZABLE)
	if @c2+ (select COUNT(*) from inserted)<=@c1 
		insert t2 select * from inserted 

go	
insert into t1 values (1),(2),(3),(4)


insert into t2 values (1), (2), (3), (4) --, (5)
select * from t2

22 июн 11, 13:10    [10853673]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить