Update&insert&delete в один запрос

Тема в разделе "SQL", создана пользователем l0nley, 2 июл 2009.

  1. l0nley

    l0nley Гость

    Исходная:
    есть таблица price_supplier:
    Код (Text):
    orphan char(50) not null,
    partnum char(50) not null,
    descr char(100) default 'Нет описания',
    amount_s char(5) not null default '0',
    skv_code char(5) not null default 'EUR',
    price float not null
    есть вторая таблица td_avail:
    Код (Text):
    orphan char(50) not null,
    partnum char(50) not null,
    description char(100) not null default 'Нет описания',
    amount_s char(5) not null default '0',
    currency char(5) not null default 'EUR',
    price float not null,
    supplier char(50) not null default 'My company'
    Описание таблиц:

    price_supplier - Таблица наличия товара у данного поставщика. Для каждого из поставщиков
    существует отдельная таблица с именем price_<поставщик>.

    td_avail - таблица наличия товаров у всех поставщиков.

    Товары идентифицируются парой (orphan,partnum)

    Задача:

    Известно сразу - поставщик supplier='какойто поставщик'

    Если товар (orphan,partnum,supplier) есть в таблице price_supplier и в таблице td_avail -> обновить
    данные о товаре из таблицы price_supplier в таблице td_avail для данного поставщика
    Если товар (orphan,partnum,supplier) есть в таблице price_supplier но нету в td_avail - > добавить
    товар (orphan,partnum,supplier,description...) в таблицу td_avail
    Если товар (orphan,partnum,supplier) есть в таблице td_aval, но нету в таблице price_supplier ->
    удалить товар (orpha,partnum,supplier) из таблицы td_avail


    Интересует не решение "в лоб", а как это сделать в один запрос?
    рыл в сторону MERGE ничего не нарыл по последнему пункту.

    в ответах желательно диалект TSQL для MSSQL 2000
     
  2. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Не вникая в особенности ваших таблиц спрошу, а чем же триггеры не устраивают?
     
  3. etc

    etc Гость

    Одним запросом никак, тут либо мерж, правда незнаю как он в 2000 и есть ли он там,
    либо сторед процедура.
     
Загрузка...

Поделиться этой страницей