public override string GetUniqueKeysSql(MetaInfoTable table) { ISqlStringBuilder sql = Importer.Genie.Lamp.GenieLampUtils.GetSqlStringBuilder(); sql.Select("C.OWNER AS {0}", SqlColName_Schema); sql.Select("C.CONSTRAINT_NAME AS {0}", SqlColName_ConstraintName); sql.Select("CC.POSITION AS {0}", SqlColName_ColumnPosition); sql.Select("C.INDEX_OWNER AS {0}", SqlColName_IndexOwner); sql.Select("C.INDEX_NAME AS {0}", SqlColName_IndexName); sql.Select("CC.COLUMN_NAME AS {0}", SqlColName_ColumnName); sql.From("ALL_CONSTRAINTS C"); sql.From("INNER JOIN ALL_CONS_COLUMNS CC ON C.OWNER = CC.OWNER AND C.CONSTRAINT_NAME = CC.CONSTRAINT_NAME"); sql.WhereAnd("C.OWNER='{0}'", table.PersistentSchema); sql.WhereAnd("C.TABLE_NAME='{0}'", table.PersistentName); sql.WhereAnd("C.CONSTRAINT_TYPE='U'"); sql.UnionAll(); sql.Select("I.OWNER AS {0}", SqlColName_Schema); sql.Select("I.INDEX_NAME AS {0}", SqlColName_ConstraintName); sql.Select("IC.COLUMN_POSITION AS {0}", SqlColName_ColumnPosition); sql.Select("I.OWNER AS {0}", SqlColName_IndexOwner); sql.Select("I.INDEX_NAME AS {0}", SqlColName_IndexName); sql.Select("IC.COLUMN_NAME AS {0}", SqlColName_ColumnName); sql.From("ALL_INDEXES I"); sql.From("INNER JOIN ALL_IND_COLUMNS IC ON I.OWNER = IC.INDEX_OWNER AND I.INDEX_NAME = IC.INDEX_NAME"); sql.From("LEFT OUTER JOIN ALL_CONSTRAINTS C ON I.OWNER = C.OWNER AND I.INDEX_NAME = C.INDEX_NAME"); sql.WhereAnd("I.OWNER='{0}'", table.PersistentSchema); sql.WhereAnd("I.TABLE_NAME='{0}'", table.PersistentName); sql.WhereAnd("I.UNIQUENESS = 'UNIQUE'"); sql.WhereAnd("C.INDEX_NAME IS NULL"); sql.OrderBy("1 ASC, 2 ASC, 3 ASC"); return(sql.ToString()); }