SQLServer запускает - PullRequest
       10

SQLServer запускает

3 голосов
/ 08 апреля 2010

Пожалуйста, помогите мне написать триггер, который добавляет новые строки в таблицу.

В моей базе данных 3 таблицы:

  1. Регионы (идентификатор, имя); id - основной;
  2. Техника (идентификатор, имя); id - основной;
  3. Наличие (id, регион, техника, количество); id - основной, регион - внешний на Regions.id, Technik - иностранный на technics.id.

Я хочу добавить новую строку в доступности для каждой строки техники при добавлении строки в области.

Нечто подобное:

procedure void OnAddNewRegion(int region)
{
    foreach (Row r in Technic)
    {
        Availability.Rows.Add(new Row(id, region, r.Id, 0));
    }
}

Но в триггере SQL. Я хочу сделать то же самое при добавлении новой строки Technics.

Ответы [ 2 ]

4 голосов
/ 08 апреля 2010

попробуйте что-то вроде этого (предполагая, что Availability.id является идентификатором), который также будет обрабатывать несколько строк, вставляемых одновременно:

CREATE TRIGGER TR_Regions ON Regions 
FOR INSERT
AS
INSERT INTO Availability 
        (region, technic, count)
    SELECT
        i.id, t.id, 0
        FROM INSERTED            i
            CROSS JOIN Technics  t

GO

вы не говорите, как Regions объединяются с Technics,Я скрестил их (каждая вставленная область получает по одной строке для каждой техники).

1 голос
/ 08 апреля 2010

На мой взгляд, более чистым решением для реализации этой конкретной логики бизнес-вставки было бы использование хранимой процедуры.

Просто создайте хранимую процедуру для обработки логики вставки записей в таблицу регионов.

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