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

Откуда:
Сообщений: 16
Даже не знаю в какой это раздел... Приложение на C#(asp.net) + MS SQL. Есть форма на которой создаются новые таски. В первую таблицу - данные добавляются один раз, а во вторую из текстового файла(по 1 записи в строку). Так вот чтобы связать эти данные, мне как-то нужно получить TestID, чтобы потом туда вложить данные из файла.

Скажем есть таблицы
test
- ID
- Text
- Comments

test1
- ID
- TestID
- MainText

Так вот суть вставить данные в первую таблицу:
ALTER PROCEDURE [dbo].[TaskModule_Insert]
	 @pText NVarChar(MAX) = NULL
	,@pComments Int = NULL
AS 
 BEGIN 
	 SET NOCOUNT ON;
Insert into [TaskModule](Text,Comments) values (@pText,	@pComments)
END
SELECT SCOPE_IDENTITY(); -- а здесь я как бы пытаюсь вернуть идентификатор для вставки данных во вторую таблицу но вообще не срабатывает возвращает значение Null


Киньте пожалуйста примерчиком или как здесь быть?
19 янв 12, 17:27    [11934591]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на добавление в несколько таблиц  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
qsm,
1. а ниче, что у вас получение SCOPE_IDENTITY() вне пределов процедуры?
2. есть кляуза аутпут, тута: http://msdn.microsoft.com/ru-ru/library/ms177564.aspx
19 янв 12, 17:31    [11934624]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на добавление в несколько таблиц  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
qsm,

а в [TaskModule] есть поле со свойством IDENTITY?
Если есть, то нет ли у таблицы триггера INSTEAD OF INSERT?
19 янв 12, 17:34    [11934639]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на добавление в несколько таблиц  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
kDnZP
qsm,
1. а ниче, что у вас получение SCOPE_IDENTITY() вне пределов процедуры?
2. есть кляуза аутпут, тута: http://msdn.microsoft.com/ru-ru/library/ms177564.aspx
А чем ограничена процедура?
Как раз-таки, SCOPE_IDENTITY() в процедуре!
По крайней мере если это реальный скрипт...
19 янв 12, 17:36    [11934649]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на добавление в несколько таблиц  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
iap
А чем ограничена процедура?
Как раз-таки, SCOPE_IDENTITY() в процедуре!

Угу, верно. Это я протормозил)))
19 янв 12, 17:43    [11934714]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на добавление в несколько таблиц  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
На всяк случай:
BEGIN TRAN
go
CREATE TABLE testtbl(a INT IDENTITY, b INT, c VARCHAR(10))
go

CREATE PROCEDURE test(@p1 INT, @p2 VARCHAR(10))
AS 
    BEGIN 
        SET NOCOUNT ON ;
        INSERT INTO testtbl(b,c) OUTPUT inserted.* VALUES(@p1,@p2)
    END
    SELECT  SCOPE_IDENTITY() id
GO
EXEC test 5,'test'
ROLLBACK
19 янв 12, 17:49    [11934780]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить