Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / CREATE CONSTRAINT LIKE UNIQUE INDEX .. WITH NOCHECK OPTION / 7 сообщений из 7, страница 1 из 1
16.06.2014, 14:18
    #38670449
medoed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CREATE CONSTRAINT LIKE UNIQUE INDEX .. WITH NOCHECK OPTION
Добрый день!
В таблице уже есть задвоенные записи, разобрать их и удалить лишние невозможно. Но с завтрешнего дня хочется, чтобы задвоений не было.
В MSSQL (по памяти можно выкрутиться как то так):

Код: sql
1.
ALTER TABLE TEMP_DATA WITH NOCHECK ADD CONSTRAINT TEMP_DATA_C UNIQUE (ID)



Есть ли что то похожее в DB2, спасибо! DB2 Version : 9.7
A lot of Thanks :)
...
Рейтинг: 0 / 0
16.06.2014, 16:56
    #38670720
boogiman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CREATE CONSTRAINT LIKE UNIQUE INDEX .. WITH NOCHECK OPTION
Марк походу на Гаити отдыхает, никто кроме него не подскажет
Ответ, что DB2 это не умееет, тоже засчитывается
...
Рейтинг: 0 / 0
16.06.2014, 19:13
    #38670885
m&m
m&m
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CREATE CONSTRAINT LIKE UNIQUE INDEX .. WITH NOCHECK OPTION
[quot medoed]Добрый день!
разобрать их и удалить лишние невозможно. [/src]

требования к системе не разрешают их удалять?
...
Рейтинг: 0 / 0
16.06.2014, 21:58
    #38670992
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CREATE CONSTRAINT LIKE UNIQUE INDEX .. WITH NOCHECK OPTION
medoedВ таблице уже есть задвоенные записи, разобрать их и удалить лишние невозможно. Но с завтрешнего дня хочется, чтобы задвоений не было.Добрый день.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
create or replace trigger TEMP_DATA_aiur
after insert or update of id on TEMP_DATA
referencing new as n
for each row
when (exists (select 1 from TEMP_DATA t where t.id=n.id having count(1)>1))
begin
  signal sqlstate '75001' set message_text='duplicate id';
end/
...
Рейтинг: 0 / 0
16.06.2014, 23:31
    #38671055
medoed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CREATE CONSTRAINT LIKE UNIQUE INDEX .. WITH NOCHECK OPTION
Mark BarinsteinmedoedВ таблице уже есть задвоенные записи, разобрать их и удалить лишние невозможно. Но с завтрешнего дня хочется, чтобы задвоений не было.Добрый день.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
create or replace trigger TEMP_DATA_aiur
after insert or update of id on TEMP_DATA
referencing new as n
for each row
when (exists (select 1 from TEMP_DATA t where t.id=n.id having count(1)>1))
begin
  signal sqlstate '75001' set message_text='duplicate id';
end/


Спасибо Марк, есть уже у нас один тригер на таблицу, но пропускает как то записи, сцобако.
Но там проверка задвоений, идет через функцию, попробуем переписать через нормальный триггер,без функции.
Спасибо...
P.S. Надеюсь, не отвлек вас из отпуска :-)
...
Рейтинг: 0 / 0
16.06.2014, 23:32
    #38671057
medoed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CREATE CONSTRAINT LIKE UNIQUE INDEX .. WITH NOCHECK OPTION
[quot m&m]medoedДобрый день!
разобрать их и удалить лишние невозможно. [/src]

требования к системе не разрешают их удалять?
Требования от бизнеса, там куча задействованных номеров, которые уже используются...
...
Рейтинг: 0 / 0
17.06.2014, 21:18
    #38672372
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CREATE CONSTRAINT LIKE UNIQUE INDEX .. WITH NOCHECK OPTION
medoedсть уже у нас один тригер на таблицу, но пропускает как то записи, сцобако.
Но там проверка задвоений, идет через функцию, попробуем переписать через нормальный триггер,без функции.Вообще да, и мой предложенный метод не защитит от одновременной вставки в разных сессиях одинакового ключа.
Наверное, более надежным методом будет введение дополнительного поля и композитного индекса:
Код: sql
1.
2.
3.
alter table temp_data add id2 int not null default 0;
update temp_data set id2=rownumber() over (partition by id) - 1;
create unique index temp_data_u on temp_data(id, id2);
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / CREATE CONSTRAINT LIKE UNIQUE INDEX .. WITH NOCHECK OPTION / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]