2013-04-06 14 views
0

我创建了具有外键如下表:我怎么看到它确实是一个外键和父表?

CREATE TABLE interests 
(
    int_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    an_interest VARCHAR(50) NOT NULL, 
    contact_id INT NOT NULL, 
    CONSTRAINT my_contacts_contact_id_fk 
    FOREIGN KEY (contact_id) 
    REFERENCES my_contacts (contact_id) 
); 

当我做DESC我看到:

mysql> desc interests; 
+------------+-------------+------+-----+---------+----------------+ 
| Field  | Type  | Null | Key | Default | Extra   | 
+------------+-------------+------+-----+---------+----------------+ 
| int_id  | int(11)  | NO | PRI | NULL | auto_increment | 
| interest | varchar(50) | NO |  | NULL |    | 
| contact_id | int(11)  | NO | MUL | NULL |    | 
+------------+-------------+------+-----+---------+----------------+ 
3 rows in set (0.02 sec) 

我知道什么MUL是,但我怎么会明确地看到,contact_id是定义为外键,哪个是通过CLI的父表?
另外为什么我不能使用my_contacts_contact_id_fk来删除外键约束?

UPDATE

mysql> ALTER TABLE interests DROP CONSTRAINT my_contacts_contact_id_fk; 
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use n 
ear 'CONSTRAINT my_contacts_contact_id_fk' at line 2 
mysql> 
+0

你的表名是利益或my_interests? – 2013-04-06 12:09:48

+1

@MoyedAnsari:Sorry.Copy-paste problem.Fixed OP – Cratylus 2013-04-06 12:14:48

+0

'SHOW CREATE TABLE interests;' – Travesty3 2013-04-06 12:17:20

回答

0

约束是对自己的数据库对象,所以当你运行 desc [interests]它不会让我感到吃惊的是没有显示约束的完整描述。 尝试desc [my_contacts_contact_id_fk]?您可以执行alter table [interests] drop constraint [my_contacts_contact_id_fk]。如果您在删除时遇到问题,是否可以发布您的alter table SQL和来自服务器的响应?

+0

查看更新在OP – Cratylus 2013-04-06 12:23:46

+0

'desc my_contacts_contact_id_fk;'也不工作 – Cratylus 2013-04-06 12:24:41

+0

语法 'ALTER TABLE interests DROP CONSTRAINT my_contacts_contact_id_fk;' 似乎对我有效。尝试限定表名和约束条件 名称与反标记(如MSSQL服务器中的方括号): 'ALTER TABLE \'interest \'DROP CONSTRAINT \'my_contacts_contact_id_fk \'; ' – 2013-04-06 13:13:09

相关问题