Обновите несколько таблиц с помощью хранимой процедуры - PullRequest
1 голос
/ 09 августа 2011

Я хочу использовать хранимую процедуру для обновления нескольких таблиц в БД.Каждая таблица имеет GUID в качестве PK, и между таблицами есть FK.

Например, одна таблица - это «Инструмент» с идентификатором столбца (guid), а другая таблица - «Тип» с идентификатором в качестве guid.снова.В Tool есть столбец с именем «TYPE_ID», который представляет собой FK для таблицы Type с сохраненным в ней типом Guid.Я хочу сначала обновить таблицу инструментов, а затем обновить таблицу типов на основе этого FK.

UPDATE Tool
    SET Name=@Name, [Enabled]=@Enabled, TestMode=@TestMode, SerialNumber=@SerialNumber, 
        Andon=@Andon, ChimeZone=@ChimeZone, Number=@ToolNumber
    WHERE ID=@ID

Update Type
    SET Type=@Type
    WHERE Tool.ID=@ID AND
        Tool.TYPE_ID=Type.ID

Я знаю, что этот код некорректен для второго обновления, но это суть того, как яхотел бы иметь возможность сделать это.Есть ли способ не выбирать Fid Guid, сохранять его и использовать при следующем обновлении?Если это единственный способ, как мне это сделать?

Ответы [ 2 ]

1 голос
/ 09 августа 2011

на самом деле вы можете использовать UPDATE FROM:

UPDATE Type
SET Type=@Type
FROM Tool INNER JOIN TYPE 
    ON Tool.TYPE_ID=Type.ID
    WHERE Tool.ID=@ID AND

см. http://msdn.microsoft.com/en-us/library/ms177523.aspx для полного синтаксиса UPDATE.

1 голос
/ 09 августа 2011

Напишите свое второе обновление следующим образом, соединив таблицу Tool с таблицей Type:

UPDATE ty
    SET Type = @Type
    FROM Tool to
        INNER JOIN Type ty
            ON to.TYPE_ID = ty.ID
    WHERE to.ID = @ID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...