oracle 9i - SQL data types

User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

oracle 9i - SQL data types

Post by Sabina »

Обратила внимание что на Oracle primary key в виде цифрового индикатора часто задается типом number. Интересно какие есть веские причины не делать его integer?

А еще мне Oracle вот на это говорит missing right parenthesis?

Code: Select all

CREATE TABLE UserType(typeCode integer(3) primary key, typeName varchar2(20)); 


Это он о чем?

Сабина
User avatar
JustMax
Уже с Приветом
Posts: 1476
Joined: 05 Dec 2000 10:01
Location: Vilnius -> Bonn

Re: oracle 9i - SQL data types

Post by JustMax »

Sabina wrote:Обратила внимание что на Oracle primary key в виде цифрового индикатора часто задается типом number. Интересно какие есть веские причины не делать его integer?

Сабина


В Oracle нет типа Integer также как и float. :)
Есть только NUMBER - все остальное это алиасы на различные
NUMBER описания (Например Intereger = NUMBER(38,0))
:wink:
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Re: oracle 9i - SQL data types

Post by Sabina »

JustMax wrote:В Oracle нет типа Integer также как и float. :)
Есть только NUMBER - все остальное это алиасы на различные
NUMBER описания (Например Intereger = NUMBER(38,0))
:wink:


Понятно, а number(x) - это тоже alias number(x,0)? А просто number дает number(0,0) и наш препод так и пишет просто number без уточнения. Это зачем такое 0,0 нужно?

Кстати ошибка про missing parenthesis была из-за integer.

Сабина
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Re: oracle 9i - SQL data types

Post by Sabina »

Ораклисты, пожалуйста спасите, сроки поджимают :cry:

I have

Code: Select all

CREATE TABLE UserType(typeCode number(3,0) primary key, typeName
varchar2(20) not null);
CREATE TABLE CMSUser(userID number(3,0) primary key, title char(3),
fName varchar2(30) not null, lName varchar2(30) not null, typeCode
number(3,0) not null, .....);


When I try create foreign key like this

Code: Select all

ALTER TABLE CMSUser ADD CONSTRAINT (typeCode_fk) FOREIGN KEY
(typeCode) REFERENCES UserType (typeCode);


I keep getting

ORA-00902 : Invalid datatype


Not sure what is wrong here?

Спасибо,
Сабина
sp123
Уже с Приветом
Posts: 1962
Joined: 24 Feb 2001 10:01
Location: Челябинск -> Everett, WA

Post by sp123 »

ADD CONSTRAINT typeCode_fk, т.е. скобки вокруг имени constraint'a не нужны.
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Post by Sabina »

sp123 wrote:ADD CONSTRAINT typeCode_fk, т.е. скобки вокруг имени constraint'a не нужны.


Понятно. Я сделала вообще не указывая имени FK сonstraint, а сейчас сижу гадаю как же мне узнать какое имя ему дал Oracle на случай, если я хочу его дропнуть?
У меня к этой базе доступ только через SQLPlus interface. Не подскажете команду как посмотреть FK Constraint имя?

Сабина
Big Cheese
Уже с Приветом
Posts: 1211
Joined: 02 Jul 2000 09:01
Location: SFBA

Post by Big Cheese »

Понятно. Я сделала вообще не указывая имени FK сonstraint, а сейчас сижу гадаю как же мне узнать какое имя ему дал Oracle на случай, если я хочу его дропнуть?

Должно быть видно через select * from all_constraints. Точные названия полей к сожалению не помню, и Оракла под рукой тоже нет :(
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Re: oracle 9i - SQL data types

Post by A. Fig Lee »

Sabina wrote:Обратила внимание что на Oracle primary key в виде цифрового индикатора часто задается типом number. Интересно какие есть веские причины не делать его integer?


АФАИК, он там с детства намбер. Ну добавили интегер, чтоб было как у всех, в АСЯх, и т.д.
Верить нельзя никому - даже себе. Мне - можно!
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Post by Sabina »

Big Cheese wrote:Должно быть видно через select * from all_constraints.


Ой, спасиб, развеселили :) Минуты три любовалась на бегущие строки :mrgreen:

Да ладно бог с ним, пороюсь завтра на свежую голову в reference.

Сабина
Lazy44
Уже с Приветом
Posts: 525
Joined: 01 May 2002 20:29
Location: CT->MA->TX->UT

Post by Lazy44 »

Sabina wrote:
Big Cheese wrote:Должно быть видно через select * from all_constraints.


Ой, спасиб, развеселили :) Минуты три любовалась на бегущие строки :mrgreen:

Да ладно бог с ним, пороюсь завтра на свежую голову в reference.

Сабина


select constraint_name
from user_constraints
where constraint_type ='R'
and table_name='CMSUSER';

CONSTRAINT_NAME
------------------------------
SYS_C004050

SQL>

Учтите, у вас будет свое имя constraint, но начинаться тоже будет на SYS_
Еще один важный момент - это запрос работает только если вашa CMSUSER table имеет только один reference constraint
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Post by Sabina »

Lazy44 wrote: select constraint_name
from user_constraints
where constraint_type ='R'
and table_name='CMSUSER';


Спасибо.
А еще вы не в курсе почему если задать тип number без определения длины он создается number(0,0)
С таким типом разьве можно работать?

Сабина
Big Cheese
Уже с Приветом
Posts: 1211
Joined: 02 Jul 2000 09:01
Location: SFBA

Post by Big Cheese »

Sabina wrote:
Big Cheese wrote:Должно быть видно через select * from all_constraints.


Ой, спасиб, развеселили :) Минуты три любовалась на бегущие строки :mrgreen:

Да ладно бог с ним, пороюсь завтра на свежую голову в reference.

Сабина
Всегда пожалуйста :) А вот то, что Вы не смогли воспользоваться подсказкой - это Вам был бы минус, случись это на интервью.
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Post by Sabina »

Big Cheese wrote:А вот то, что Вы не смогли воспользоваться подсказкой - это Вам был бы минус, случись это на интервью.


А кто сказал, что я не смогла воспользоваться :wink: ?
Потом у меня всего одни день на то чтобы отладить DB connection и все скрипты и JSP с двумя основными формами написать. А я Oracle с 1997 года в руки не брала :(

Сабина
Big Cheese
Уже с Приветом
Posts: 1211
Joined: 02 Jul 2000 09:01
Location: SFBA

Post by Big Cheese »

Sabina wrote:
Big Cheese wrote:А вот то, что Вы не смогли воспользоваться подсказкой - это Вам был бы минус, случись это на интервью.


А кто сказал, что я не смогла воспользоваться :wink: ?
Вот оно - женское коварство! :)
Sabina wrote:Потом у меня всего одни день на то чтобы отладить DB connection и все скрипты и JSP с двумя основными формами написать. А я Oracle с 1997 года в руки не брала :(
Я тоже Оракловские штучки за 3 года подзабыл основательно (даже то, что знал). Удачи Вам в борьбе со скриптами и прочими JSP!
User avatar
JustMax
Уже с Приветом
Posts: 1476
Joined: 05 Dec 2000 10:01
Location: Vilnius -> Bonn

Post by JustMax »

Sabina wrote:Спасибо.
А еще вы не в курсе почему если задать тип number без определения длины он создается number(0,0)
С таким типом разьве можно работать?

Сабина


Создается number по максимуму. To же самое что

Code: Select all

NUMBER(38)
.[/code]

Return to “Вопросы и новости IT”