表格1
create table personal(
id int not null auto_increment unique,
name char(20) not null,
age int not null,
city varchar(20) not null default 'Delhi'
);
insert into personal(name,age,city) values
('anubhav',22,'delhi'),
('rohit',24,'agra');
表 2
create table applications(
app_id int(5) not null auto_increment unique,
city varchar(10) not null default 'Delhi'
);
insert into applications(city) values
('kolkata'),
('mumbai'),
('mumbai'),
('delhi'),
('agra'),
('agra');
然后我在 Alter 命令的幫助下在這里應用外鍵-
alter table personal add foreign key(city) references applications(app_id)
但我收到一個錯誤:ERROR 1005 (HY000): Can't create table 'student.#sql-f40_3' (errno: 150)
uj5u.com熱心網友回復:
MySQL指定:
條件和限制
1.外鍵和被參考鍵中的對應列必須具有相似的資料型別。INTEGER 和 DECIMAL 等固定精度型別的大小和符號必須相同。字串型別的長度不必相同。對于非二進制(字符)字串列,字符集和排序規則必須相同。
2.MySQL 需要對外鍵和參考鍵建立索引,這樣外鍵檢查就可以快速且不需要表掃描。在參考表中,必須有一個索引,其中外鍵列按相同順序列為第一列。如果參考表不存在,則會在參考表上自動創建此類索引。如果您創建另一個可用于強制外鍵約束的索引,則此索引可能會在稍后被靜默洗掉。index_name,如果給定,如前所述使用。
資料型別必須相同。
你可以這樣做:
alter table personal add foreign key(city) references applications(city)
但是,兩個表上的列都應該被索引。看這里
uj5u.com熱心網友回復:
你的設計沒有標準化
您的個人表應該只參考 id。
應用程式中的城市名稱應該是唯一的,所以我在創建表中添加了它,表中不需要兩個或多個德里(參見規范化)
如果您真的想在個人中使用城市名稱,您必須像我已經參考過的 appcations 的 coty 名稱或為該列定義一個 KEY 一樣。
此外,列的資料型別必須始終是兩個表中外鍵的 saem
create table personal(
id int not null auto_increment unique,
name char(20) not null,
age int not null,
city int not null default 0
);
create table applications(
app_id int not null auto_increment primary key,
city varchar(10) not null unique default 'Delhi'
);
alter table personal add foreign key(city) references applications(app_id)
uj5u.com熱心網友回復:
您有一些小錯誤,例如未將null放入自動增量的插入中,如果它是主鍵,則不應放入not null。
個人表
create table personal(
id int auto_increment primary key,
name char(20) not null,
age int not null,
city varchar(20) not null default 'Delhi'
);
insert into personal values (null,'anubhav',22,'delhi'),
(null,'rohit',24,'agra');
表應用
create table applications(
app_id int(5) auto_increment primary key,
city varchar(10) not null default 'Delhi'
);
insert into applications values(null,'kolkata'),
(null,'mumbai'),
(null,'mumbai'),
(null,'delhi'),
(null,'agra'),
(null,'agra');
更改表
alter table personal add foreign key(city) references applications(app_id)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/446375.html
