Не могли бы вы объяснить, как результаты будут отличаться (каковы преимущества) между двумя операциями таблицы CREATE?Создать таблицу с контрольными ограничениями
Вариант № 1
CREATE TABLE sch.address_type (
address_type_cd VARCHAR2(50 BYTE) NOT NULL CONSTRAINT sch_2002 CHECK ("address_type_cd" IS NOT NULL),
desc_txt VARCHAR2(100 BYTE) NOT NULL CONSTRAINT sch_2003 CHECK ("DESC_TXT" IS NOT NULL),
rec_creat_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL CONSTRAINT sch_2001 CHECK ("REC_CREAT_TS" IS NOT NULL),
CONSTRAINT pk_address_type PRIMARY KEY (address_type_cd)
);
Вариант № 2
CREATE TABLE sch.address_type (
address_type_cd VARCHAR2(50 BYTE) NOT NULL,
desc_txt VARCHAR2(100 BYTE) NOT NULL,
rec_creat_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
CONSTRAINT pk_address_type PRIMARY KEY (address_type_cd)
);
Благодаря
Ограничения 'check' совершенно не нужны. Почему вы включили их? –
Разница в том, что если вы измените таблицу, чтобы удалить обозначение NOT NULL в столбцах, ограничения проверки из первой версии все равно будут на месте. Это вызовет много путаницы. Теперь: Это вопрос, который вы хотели спросить, или вы хотели спросить что-то еще? А именно, возможно, в первом запросе, который вы делали ** не ** означает иметь «NOT NULL», а вместо этого требовали только ограничения «CHECK»? – mathguy
Я использую инструмент сравнения между двумя средами баз данных, а одна среда отображается как первый оператор create, а второй - тот, у которого нет контрольных ограничений. Было любопытно, было ли преимущество для первого - казалось бы, избыточным было иметь как в первом примере ... – JonathanSK