2014-10-29 4 views
1

Чтобы сделать это просто у меня есть это:Таблица связь с хранимой процедурой и триггером

C форма # -> TABLEA (с помощью хранимой процедуры)

То, что я пытаюсь достичь:

C форму # -> TABLEA -> TableB

Информация отправлена ​​из C# формы в таблице А. из таблицы ИИ необходимо отправить соответствующий столбец в таблице B

TableA (ProfileID) = Table B (UserID) 

Итак, я создал триггер на моей хранимой процедуры, которая связана с C# формы:

ALTER TRIGGER IDs 
ON dbo.UserProfile 
FOR INSERT 
AS 
    DECLARE @ProfileID int 

    SELECT 
     ProfileID 
    FROM 
     dbo.UserProfile 

    INSERT INTO dbo.Users(Users.UserID) 
    VALUES(@ProfileID) 
GO 

Но когда моя хранимая процедура выполняется из C# формы, я получаю ошибку:

Invalid column name 'UserID'.

Заранее спасибо.

+0

Есть еще много * * вещей не так с вашим кодом триггера .. Может быть, вы просто должны иметь форму, или sproc, сделать дополнительные вставки? – Blorgbeard

+0

Согласен с Blorgbeard. Если вы оберните 2 вставки в рамках одной транзакции, вы получите тот же эффект с меньшим риском. –

+0

@Blorgbeard Я новичок в триггерах, вы можете объяснить, что не так? Я пытаюсь сделать следующее: всякий раз, когда новая вставка создается из формы в таблицу, поле из таблицы A (которое автоматически увеличивается) также попадает в таблицу B. Если есть более простой способ сделать это, пожалуйста, дай мне знать. – Noonmoon

ответ

1

Как уже упоминалось в комментариях к вопросу, вероятно, лучше вставить ваши вставки в транзакцию в уже записанном запрошенном запросе, но если вы должны сделать триггер, то это будет выглядеть так. Обратите внимание на конкретное имя, а затем вставка выполняется из таблицы INSERTED.

ALTER TRIGGER UserProfile_CreateUser 
ON dbo.UserProfile 
FOR INSERT 
AS 
BEGIN 
    INSERT dbo.Users (UserID) 
     SELECT ProfileID 
     FROM INSERTED 
END 
GO 

Для получения дополнительной информации о виртуальных таблицах: http://msdn.microsoft.com/en-us/library/ms191300.aspx

+0

Спасибо за помощь. Я думаю, что использование триггера в этом случае может оказаться не лучшим решением. – Noonmoon

+0

Я изучаю транзакции, и примеры, которые я вижу, имеют жестко закодированные значения в SET и WHERE, если я должен был выполнить эту транзакцию, как я могу это сделать: SET userID = ProfileID, WHERE ... – Noonmoon