Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / таблицы в DB2 / 10 сообщений из 10, страница 1 из 1
19.11.2008, 10:09
    #35662421
Frail
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
таблицы в DB2
Добрый день!
Пожалуйста, помогите, такой вопрос:
как задать формулу (синтаксис) для генерации значений при создании таблицы в DB2?

Заранее огромное спасибо.
...
Рейтинг: 0 / 0
19.11.2008, 10:49
    #35662578
I_love_MSDN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
таблицы в DB2
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE "yourschema"."yourcolumn" (
  "ABC"	INTEGER	NOT NULL	GENERATED BY DEFAULT
    AS IDENTITY (START WITH  1 , INCREMENT BY  1 , NO CACHE,
       NO MINVALUE, NO MAXVALUE, NO CYCLE, NO ORDER),
  "SECOND"	CHARACTER( 1 ) FOR SBCS DATA	WITH DEFAULT NULL
  
)
  IN DATABASE "yourdatabase"
  AUDIT NONE
  DATA CAPTURE NONE
  NOT VOLATILE
  CCSID EBCDIC;

-Абсолют-
...
Рейтинг: 0 / 0
20.11.2008, 09:51
    #35664730
Frail
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
таблицы в DB2
Это все понятно, но мне нужно немножко другая информация.

Есть два поля дата и порядковый номер записи текущего дня, которая с изменением даты (новый день) сбрасывается на 1. Как это реализовать с помощью настроек DB2? Может есть какие то команды?
...
Рейтинг: 0 / 0
20.11.2008, 10:25
    #35664817
golsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
таблицы в DB2
Используйте триггер insert before
...
Рейтинг: 0 / 0
20.11.2008, 11:47
    #35665064
Frail
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
таблицы в DB2
golsaИспользуйте триггер insert before

А как его использовать?
Напишите пжлста пример
...
Рейтинг: 0 / 0
20.11.2008, 15:41
    #35665981
golsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
таблицы в DB2
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TRIGGER <имя тригера> 
NO CASCADE BEFORE INSERT ON <имя таблицы>
REFERENCING NEW AS NEW_ROW 
FOR EACH ROW 
BEGIN ATOMIC
  SET NEW_ROW.<имя поля c датой> = <дата>
  SET NEW_ROW.<имя поля c числом дней> = <число дней с начала года>
END
...
Рейтинг: 0 / 0
21.11.2008, 14:06
    #35668131
Dune
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
таблицы в DB2
golsa
Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE TRIGGER <имя тригера> 
NO CASCADE AFTER INSERT ON <имя таблицы>
REFERENCING NEW AS NEW_ROW 
FOR EACH ROW MODE DB2SQL
  SET (NEW_ROW.<имя поля c датой>, NEW_ROW.<имя поля c числом дней>)  = 
        (<дата>, <число дней с начала года>);
...
Рейтинг: 0 / 0
24.11.2008, 14:19
    #35671692
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
таблицы в DB2
Добрый день.
FrailЭто все понятно, но мне нужно немножко другая информация.

Есть два поля дата и порядковый номер записи текущего дня, которая с изменением даты (новый день) сбрасывается на 1. Как это реализовать с помощью настроек DB2? Может есть какие то команды?После того, как дата изменилась, есть вероятность, что записи будут добавляться в этот день другим числом?
...
Рейтинг: 0 / 0
25.11.2008, 23:10
    #35675282
Frail
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
таблицы в DB2
ВСЕМ ОГРОМНОЕ СПСБ !!!!!
ЕСТЬ ПРОБЛЕМА С КОНСТРУКЦИЕЙ < IF ... THEN >
ПИШЕМ ТАК :

CREATE TRIGGER TRG_UPD
BEFORE UPDATE ON OLD_KODE
REFERENCING NEW AS NEW_ROW
FOR EACH ROW
WHEN
(
(NEW_ROW.ID_NUM+1>999) AND
(NEW_ROW.ID_KOD+1<=NEW_ROW.ID_KODK)
)
BEGIN ATOMIC
SET NEW_ROW.ID_NUM=1;
SET NEW_ROW.ID_KOD=NEW_ROW.ID_KOD+1;
END

ВСЕ НОРМАЛЕК .. КАТИТ

А КАК ЭТО НАПИСАТЬ ИСПОЛЬЗУЯ КОНСТРУКЦИЮ < IF ... THEN > НЕ ИСПОЛЬЗУЯ < WHEN > ???

ЕСЛИ ПИСАТЬ ТАК

CREATE TRIGGER TRG_UPD
BEFORE UPDATE ON OLD_KODE
REFERENCING NEW AS NEW_ROW
FOR EACH ROW

BEGIN ATOMIC
IF (NEW_ROW.ID_NUM+1>999) AND
(NEW_ROW.ID_KOD+1<=NEW_ROW.ID_KODK)
THEN
BEGIN
SET NEW_ROW.ID_NUM=1;
SET NEW_ROW.ID_KOD=NEW_ROW.ID_KOD+1;
END
ELSE BEGIN
......
.......
END
END

ДАЕТ ОШИБКУ ТИПА ПОСЛЕ <THEN> ОЖИДАЛСЯ ......
ВАРИАНТЫ < BEGIN ... END> И Т.П. ВСЕ ПЕРЕБРАЛА
ВСЕ ТА ЖЕ ОШИБКА....
ЧТО ЗНАЧИТ ТАКАЯ КОНСТРУКЦИЯ НЕ КАТИТ ?????

Я ПИШУ НА DB2 EXPRESS-C

МОЖЕТ КТО ПОДСКАЖЕТ КАК ПИСАТЬ КОНСТРУКЦИЮ <IF ... THEN >
...
Рейтинг: 0 / 0
26.11.2008, 10:34
    #35675729
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
таблицы в DB2
FrailCREATE TRIGGER TRG_UPD
BEFORE UPDATE ON OLD_KODE
REFERENCING NEW AS NEW_ROW
FOR EACH ROW

BEGIN ATOMIC
IF (NEW_ROW.ID_NUM+1>999) AND
(NEW_ROW.ID_KOD+1<=NEW_ROW.ID_KODK)
THEN
BEGIN
SET NEW_ROW.ID_NUM=1;
SET NEW_ROW.ID_KOD=NEW_ROW.ID_KOD+1;
END
ELSE BEGIN
......
.......
END
END IF;
ENDСм. также IF statement .
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / таблицы в DB2 / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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