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

create table test (id uniqueidentifier, name nvarchar(20))

insert test values (newid(), 'третий')
insert test values (newid(), 'второй')
insert test values (newid(), 'первый')





create table second_test (id int identity(1,1) , parentID uniqueidentifier)


insert second_test
select ID from test 




create trigger dbo.ChildMembers on dbo.test 
after Insert 
as 
begin
	insert second_test 
	select id from inserted 
end


insert test values (newid(), 'четвертый')



create table t (id int identity (1,1), member uniqueidentifier, t nvarchar (20))


таблицу test с полем uniqueidentifier

Подчиненную таблицу second_test
где каждой uniqueidentifier соответсвуюет целочисленное значение


стОроннию таблицу t, в которую может заносится или изменятся поле member
из таблицы test.

Возможно ли тригером вместо значения uniqueidentifier вставлять соотв. ему значение int???


у меня как-то не выходит... пробовал так:



create trigger trg1
on t
instead of update
as
begin
	if UPDATE(member) 
    update
        t
    set
        t.member = (select ID from second_test where parentID = i.member)
    from
        t
        inner join inserted i on t.id = i.id
end
20 окт 11, 01:38    [11469876]     Ответить | Цитировать Сообщить модератору
 Re: Подмена значения тригером?  [new]
Sack
Member

Откуда:
Сообщений: 164
Кукушонок
Возможно ли тригером вместо значения uniqueidentifier вставлять соотв. ему значение int???

если я вас правильно понял, то нельзя

BOL
Столбец или локальную переменную типа uniqueidentifier можно инициализировать следующими способами:

При помощи функции NEWID.

Преобразование из строковой константы в формате xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, где каждый символ x представляет шестнадцатеричную цифру в диапазоне 0–9 или a–f. Например, 6F9619FF-8B86-D011-B42D-00C04FC964FF является допустимым значением типа uniqueidentifier.

Эта статья на MSDN
20 окт 11, 04:50    [11470010]     Ответить | Цитировать Сообщить модератору
 Re: Подмена значения тригером?  [new]
Кукушонок
Guest
Sack,

Вопрос в том, что бы подменять значение uniqueidentifier которое пытается добавить стороннее приложение на int которое ему соответсвует
20 окт 11, 09:25    [11470273]     Ответить | Цитировать Сообщить модератору
 Re: Подмена значения тригером?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Кукушонок
Вопрос в том, что бы подменять значение uniqueidentifier которое пытается добавить стороннее приложение на int которое ему соответсвует

Вы можете составить внутри триггера select, который выберет нужные данные для измененных строк ?
20 окт 11, 09:34    [11470300]     Ответить | Цитировать Сообщить модератору
 Re: Подмена значения тригером?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31986
Кукушонок
Sack,

Вопрос в том, что бы подменять значение uniqueidentifier которое пытается добавить стороннее приложение на int которое ему соответсвует
Если действительно соответствует, то см. функцию CONVERT

declare @i int = 123,
	@u uniqueidentifier
	
set @u = CONVERT(uniqueidentifier, CONVERT(BINARY(16), @i))
select @u
20 окт 11, 09:46    [11470350]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить