您的位置:首页 > 数据库 > MySQL

改写的两个mysql存储过程,用于判断主键外键

2015-10-22 17:51 791 查看

改写的两个mysql存储过程,用于判断主键外键

由于所在的数据库没有系统自带的sp_pkeys,sp_fkeys,所以改写了如下:

sp_pkeys

CREATE PROCEDURE `testdb`.`sp_pkeys` (IN table_name varchar(50),IN table_owner varchar(50),IN table_qualifier varchar(50))

NOT DETERMINISTIC

begin

/**procedure body**/

select column_name from information_schema.columns where table_schema='testdb' and table_name=@table_name and column_key='PRI';

end;

SET @table_name='test';

CALL sp_pkeys(@table_name,null,null);



sp_fkeys

CREATE PROCEDURE `testdb`.`sp_fkeys` (IN pktb_name varchar(50),IN pkcolume_name varchar(50),IN pktb_owner varchar(50),IN pktb_qualifier varchar(50))

NOT DETERMINISTIC

CONTAINS SQL

begin

/**procedure body**/

select COLUMN_NAME from information_schema.KEY_COLUMN_USAGE where table_name = pktb_name and COLUMN_NAME=pkcolume_name and REFERENCED_COLUMN_NAME is not null;

end;

CALL sp_fkeys ('test',

'name',

null,

null)

other:

创建外键

alter table test add constraint FK_Id foreign key(Name) REFERENCES testfk(Name);

FK_Id 外键的名称

Name: test表中外键的字段名

后面那个Name:关联表的主键名

注意:如果test中存在name的值在testfk中没有会创建失败

删除外键

ALTER TABLE `test` DROP FOREIGN KEY `FK_ID`
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: