Използвам Rails Fixtures, за да заредя някои тестови данни в моята база данни и случайно въведох външен ключ извън обхвата.
За моя изненада базата данни го прие, въпреки че има ограничения за референтна цялост (които работят). Опитах с PostgreSQL и с MySQL InnoDB и двете бяха разрешени.
Пример:
В базата данни "Вкусове" с цифров първичен ключ (id), 5 записа (1 до 5). Мога да представя лоши данни:
Icecream_1: име: моят вкус на сладолед_id: 6
Как е възможно зареждането на приспособленията да заобикаля ограниченията на моята база данни?
Благодаря ти.
Ето две таблици. Имайки 200 user_types (фалшиви данни), успях да въведа потребител с user_type_id 201, но само от приспособления, pgAdmin го забранява.
CREATE SEQUENCE user_types_id_seq;
CREATE TABLE user_types (
id SMALLINT
NOT NULL
DEFAULT NEXTVAL('user_types_id_seq'),
name VARCHAR(45)
NOT NULL
UNIQUE,
PRIMARY KEY (id));
CREATE SEQUENCE users_id_seq;
CREATE TABLE users (
id BIGINT
NOT NULL
DEFAULT NEXTVAL('users_id_seq'),
user_type_id SMALLINT
NOT NULL
REFERENCES user_types (id) ON DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY (id));
---------
Fixture
<% for i in (1..201) %>
user_<%= i %>:
id: <%= i %>
user_type_id: <%= i %>
<% end %>
И както казах, както innoDb, така и postgresql приеха лошия ключ.
Благодаря