我 有 一 个 MySQL 数据 库 与 一些 数百 表 。
我 需要 删除 基于 名 为 " companyId " 的 公共 列 的 所有 表 中 的 记录 - 此 列 存在 于 数据 库 的 所有 表 中 。
如何 删除 columnId = somenumber 的 所有 表 中 的 所有 记录 ?
先 谢谢 你 !
伊万诺 角
@SocratesG 我 尝试 了 您 的 存储 过程 , 但 在 创建 SP 时 出现 以下 错误 :
错误 1064 : SQL 语法 中 有 错误 ;查看 与 MySQL 服务 器 版本 对应 的 手册 , 以 了解 在 '@TableNameVARCHAR ( 128 ) 附近 使用 的 正确 语法 ;
DECLARE @MyColumn VARCHAR(128);
SET @MyColumn = 'compan' at line 4
SQL Statement:
CREATE PROCEDURE `deletePortalInstance` ()
BEGIN
DECLARE @TableName VARCHAR(128);
DECLARE @MyColumn VARCHAR(128);
SET @MyColumn = 'companyId'
DECLARE MyCursor CURSOR FOR
(SELECT OBJECT_NAME(c.id) AS ObjectName
FROM dbo.syscolumns c
WHERE OBJECTPROPERTY(c.id,'ISTABLE') = 1 --Search for tables only
AND c.name = @MyColumn)
OPEN MyCursor
FETCH NEXT FROM MyCursor into @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC('DELETE '+@MyColumn+' FROM '+@TableName+' WHERE '+@MyColumn+' = 906454')
FETCH NEXT FROM MyCursor into @TableName
END
CLOSE MyCursor
DEALLOCATE MyCursor
END
中 的 每 一 个
4条答案
按热度按时间uxh89sit1#
你可以试试这个
dpiehjr42#
但是我认为您使用了引用完整性约束,使用了外键,并使用了On Delete Cascade
根据你的新消息
更新日期:
说明:
1.这里我们要从多个表中删除记录,因此使用
DELETE FROM table1,table2
等1.由于所有表中有一个同名列,因此我们将其设置为
JOIN
,以便可以一次删除100个表中所有行3.最后,我们有条件
WHERE t1.columnId = 1
,意味着在table1中,检查columnId = 1,所以当我们连接时,它选择100表中的所有这样的行,然后删除它。jrcvhitl3#
这些例子
iqxoj9l94#