//-------------------------------------------------------------------------------------- private static CResultAErreur SupprimeDependances(string strNomTable, string strNomChamp, IDatabaseConnexion connexion) { CResultAErreur result = CResultAErreur.True; string strRequeteGetForeignKey = @" SELECT obj2.name FROM sysobjects AS obj1 INNER JOIN syscolumns AS sc ON sc.id=obj1.id INNER JOIN sysconstraints AS scon ON (scon.id=obj1.id AND sc.colid=scon.colid) INNER JOIN sysobjects AS obj2 ON scon.constid=obj2.id AND obj1.name='" + strNomTable + "' " + "AND sc.name='" + strNomChamp + "'"; IDataAdapter adapter = connexion.GetSimpleReadAdapter(strRequeteGetForeignKey); DataSet ds = new DataSet(); connexion.FillAdapter(adapter, ds); DataTable dt = ds.Tables[0]; foreach (DataRow row in dt.Rows) { string strRequeteSuppressionRelation = "ALTER TABLE " + strNomTable + " DROP CONSTRAINT " + (string)row[0]; result = connexion.RunStatement(strRequeteSuppressionRelation); if (!result) { result.EmpileErreur(I.T("Error while deleting constrain @1 of table @2|133", (string)row[0], strNomTable)); return(result); } } string strRequeteIndexes = @"SELECT si.name FROM sysobjects tbl INNER JOIN syscolumns sc ON sc.id = tbl.id INNER JOIN sysindexkeys sik ON sik.id = tbl.id AND sc.colid = sik.colid INNER JOIN sysindexes si ON si.id = tbl.id AND si.indid = sik.indid WHERE (tbl.name = '" + strNomTable + "') AND (sc.name = '" + strNomChamp + "') and " + "si.name like 'IX%'"; adapter = connexion.GetSimpleReadAdapter(strRequeteIndexes); ds = new DataSet(); connexion.FillAdapter(adapter, ds); dt = ds.Tables[0]; foreach (DataRow row in dt.Rows) { string strRequeteSuppressionIndex = " DROP INDEX " + strNomTable + "." + (string)row[0]; result = connexion.RunStatement(strRequeteSuppressionIndex); if (!result) { result.EmpileErreur(I.T("Error while deleting index @1 of the table @2|130", (string)row[0], strNomTable)); return(result); } } return(result); }
//-------------------------------------------------------------------------------------- private static CResultAErreur SupprimeForeignKeys(string strNomTable, string strNomChamp, IDatabaseConnexion connexion) { CResultAErreur result = CResultAErreur.True; string strRequeteGetForeignKey = @" SELECT obj2.name FROM sysobjects AS obj1 INNER JOIN syscolumns AS sc ON sc.id=obj1.id INNER JOIN sysforeignkeys AS fk ON (fk.fkeyid=obj1.id AND colid=fk.fkey) INNER JOIN sysobjects AS obj2 ON fk.constid=obj2.id WHERE obj1.xtype='U' AND obj1.name='" + strNomTable + "' " + "AND sc.name='" + strNomChamp + "'"; IDataAdapter adapter = connexion.GetSimpleReadAdapter(strRequeteGetForeignKey); DataSet ds = new DataSet(); connexion.FillAdapter(adapter, ds); DataTable dt = ds.Tables[0]; foreach (DataRow row in dt.Rows) { string strRequeteSuppressionRelation = "ALTER TABLE " + strNomTable + " DROP CONSTRAINT " + (string)row[0]; result = connexion.RunStatement(strRequeteSuppressionRelation); if (!result) { result.EmpileErreur(I.T("Error while deleting constrain @1 of table @2|133", (string)row[0], strNomTable)); return(result); } } return(result); }