mysql - 使用变量作为名称删除外键

标签 mysql sql

我使用以下内容:

DECLARE @ConstraintName varchar(255);
SELECT @ConstraintName = CONSTRAINT_NAME 
FROM 
   INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE 
WHERE 
   TABLE_NAME = 'TheTable' 
   AND COLUMN_NAME = 'TheColumn';

alter table TheTable drop constraint @ConstraintName;

但是,@ConstraintName 附近的语法不正确。这可能是一件小事,但我无法弄清楚。我应该改变什么才能取消约束?

SQLFiddle:http://sqlfiddle.com/#!2/6709e/3

最佳答案

DECLARE @constraintName VARCHAR(50);
DECLARE @runString VARCHAR(2000);

select @constraintName = CONSTRAINT_NAME
from INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
WHERE TABLE_NAME = 'TheTable' AND COLUMN_NAME = 'TheColumn';


SET @runString = CONCAT('ALTER TABLE TheTable DROP CONSTRAINT ', @constraintName);
PREPARE stmt1 FROM @runString ;
EXECUTE stm1;
DEALLOCATE PREPARE stmt1;

关于mysql - 使用变量作为名称删除外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23757105/

相关文章:

mysql - Chef菜谱数据库指定了一个下层MySQL。我该怎么处理?

mysql - 带有加权分数的 Sql 流行度算法

mysql - 基于 MySQL 5.6 和 ORACLE 11 和 ORACLE 12 中的现有列填充列

php - 在 MySQL 中连接多个表

sql - 如何使用 SQL Server 列出文件夹内的文件

mysql - 给定的数据类型 enum() 包含错误 mysql

php - 使用 laravel 5.2 socialite 将 Facebook 用户与我们的应用程序集成

mysql - 如何选择另一列的所有值都等于某值的列值?

sql - 显示消息数组中的最后一条消息

Java读写本地数据库?