当使用以下命令更改表时,我需要检索受影响行的报告:
1.-更换发动机:
ALTER TABLE <table> ENGINE=INNODB;
2.-添加约束:
ALTER TABLE nombre_tabla ADD PRIMARY KEY símbolo_clave_foránea;
ALTER TABLE nombre_tabla DROP PRIMARY KEY símbolo_clave_foránea;
ALTER TABLE nombre_tabla ADD FOREIGN KEY símbolo_clave_foránea;
ALTER TABLE nombre_tabla DROP FOREIGN KEY símbolo_clave_foránea;
3.-添加UNIQUE约束。
主键或唯一键的失败是查找重复项,如果其中有null,则需要首先对它们进行排序。
例如,给定MyTable(KeyField int not null)
,然后
Select KeyField From MyTable
inner join (Select KeyField,Count() as NumberOfTimes Group By KeyField) Duplicates
Where NumberOfTimes > 1
那你就得想办法对付他们了。删除或重新设置密钥。
外键只是一个外部联接查询,其中键为空
例如给定MyTable (KeyField int not null, ForeignKeyField int not null)
和MyLookUpTable(LookUpkey int not null, Description VarChar(32) not null)
然后
Select KeyField From MyTable
Left Join MyLookUpTable On MyTable.LookUpField = MyLookUpTable.LookUpKey
Where MyTable.LookUpField Is Null
同样,你必须决定如何处理它们。你可以删除它们,但这可能会有所帮助。一种方法是在查找表中插入一个"丢失"的记录,获取它的键,然后使用join进行更新。所以假设密钥是999
Update m
Set LookUpField = 999
From MyTable m
Left Join MyLookUpTable On m.LookUpField = MyLookUpTable.LookUpKey
Where m.LookUpField Is Null
现在,你可以挖出999个,并在空闲时处理它们。