При создании ограничения вы должны явно указать ключевое слово constraint
и имя этого ограничения, чтобы вы получили правильное имя в базе данных для этого объекта.
Oracle обрабатывает пустую строкукак ноль , так что NOT NULL DEFAULT ''
не будет работать.Я удалил это и изменил varchar
на varchar2
, так как будущее поведение varchar
не гарантируется .
CREATE TABLE yii_profiles (
user_id NUMBER(11) NOT NULL,
lastname varchar2(50) NOT NULL,
firstname varchar2(50) NOT NULL,
birthday date NOT NULL,
constraint pk_yii_profiles PRIMARY KEY (user_id)
);
Таким же образом установка значения по умолчанию наненулевой столбец не является обязательно хорошей идеей.Если вы хотите запоминать имена, фамилии и дни рождения ваших пользователей, хотите ли вы их по умолчанию?
Либо имя должно быть включено , в этом случае установка значения по умолчанию для этого столбца приведет только к созданию неверных данных, либо данные не требуются истолбец должен быть обнуляемым.Лично я бы удалил значение по умолчанию на birthday
также по той же причине.Кроме того, как указало a_horse_with_no_name, 0 не работает как дата в Oracle.
Если birthday
не означает «дата рождения», а вместо этого день, который является годовщиной рождения ваших пользователей, тогдарассмотреть вопрос об изменении этого и захвата даты рождения, а не дня рождения.Вы всегда сможете рассчитать день рождения, но вернуться к дате рождения было бы невозможно.