Как вставить данные в две таблицы с помощью t-sql - PullRequest
1 голос
/ 28 января 2012

Этот вопрос очень похож на вопрос, заданный здесь , поэтому я надеюсь, что это не слишком излишне.

Я новичок в T-SQL и пытаюсь понять, есть ли другой / лучший подход для вставки записей в две таблицы.

Например, у меня есть форма с именем и адресомв моей БД это представлено двумя таблицами (клиент и адрес) на самом базовом уровне, если я хочу вставить следующее:

Имя поля (первый, средний последний возраст) для именования таблицы и адреса (улицаномер, название улицы, город, штат, почтовый индекс) к таблице адресов с именем, являющимся основной таблицей, может кто-нибудь указать мне правильное направление, как наилучшим образом сделать это в SQL Server / T-sql?Или это будет так же, как в синтаксисе MySQL, сначала вставив человека, а затем выбрав последнего вставленного пользователя, получившего идентификатор, а затем добавив адрес и идентификатор (как fk) в таблицу адресов?

I 'Буду также признателен за любые ссылки или дополнительные чтения на лучший подход.

Приветствия (и заранее спасибо)

Ответы [ 2 ]

3 голосов
/ 28 января 2012

Вам нужно сделать две вставки.После первой вставки в таблицу клиента используйте @@ identity, чтобы получить идентификатор вставленной записи.

INSERT INTO client VALUES ('Peter', 'Griffin')

SET @clientKey = @@IDENTITY

INSERT INTO address VALUES (@clientKey, '123 Elm')
1 голос
/ 28 января 2012

как насчет создания STORED PROCEDURE для этого?

пример:

CREATE PROCEDURE Registration.IdentifyStudentsByState
    @Gdr nvarchar(20),
    @StateOrProvince char(2)
AS
BEGIN
    SELECT FullName = LastName + ', N' + FirstName,
           DATEDIFF(year, DateOfBirth, GETDATE()) AS Age,Gender
    FROM Registration.Students
    WHERE (Gender = @Gdr) AND (State = @StateOrProvince);
END

поэтому в вашем случае вы должны написать что-то вроде этого:

CREATE PROCEDURE InsertData
    @iFirst varchar(50),
    @iMiddle varchar(50),
    @iLast varchar(50),
    @iAge varchar(50),
    @iStreetNo varchar(50),
    @iStreetName varchar(50),
    @iCity varchar(50),
    @iState varchar(50),
    @iZip varchar(50)
AS
BEGIN
    INSERT tableNameA(First, Middle, Last, Age) VALUES (@iFirst,@iMiddle,@iLast,@iAge);
    INSERT tableNameB(StreetNo,Streetname,City, State,Zip) VALUES (@iStreetNo,@iStreetName,@iCity,@iState,@iZip);
END

* 1011 ИСПОЛЬЗОВАНИЕ *

EXEC InsertData 'john','mm','doe','45','asd','fg','fgh','fgh','fgh';


ПРИМЕЧАНИЕ. Приведенная выше иллюстрация является просто примером того, как создать STORED PROCEDURE, вы можете изменить PARAMETERs, DATA TYPEs и запросы. Я надеюсь, это поможет вам. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...