改写的两个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`
相关文章推荐
- MySQL 触发器
- Mysql没有初始密码(ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO))
- mysql树
- ubuntu14.04 下 mysql 存储目录迁移
- 解决mysql slave同步问题
- mysql event 事件
- 【转】MySQL随机字符串生成
- Windows Server 2003 下配置 MySQL 群集(Cluster)
- MySQL RESET MASTER与RESET SLAVE
- MySQL使用中的一些方法与技巧
- 2套mysql主从互切脚本
- MySQL 表锁以及FLUSH TABLES操作
- mysql c
- MySQL中general log使用
- JDBC-连接mysql查询数据时中文为空解决办法
- MySQL中数据库重命名
- MySQL UPDATE语句中的一个诡异现象
- MySQL中一些查看事务和锁情况的常用语句
- [转]MYSQL 查询优化
- mysql left( right ) join使用on 与where 筛选的差异