Changeset 11723 for branches/dev/data


Ignore:
Timestamp:
2007/03/09 22:31:03 (19 years ago)
Author:
naka
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/dev/data/lib/slib.php

    r11658 r11723  
    117117    } 
    118118     
     119    return false; 
     120} 
     121 
     122// ¥¤¥ó¥Ç¥Ã¥¯¥¹¤Î¸ºß¥Á¥§¥Ã¥¯¤ÈºîÀ® 
     123function sfIndexExists($table_name, $col_name, $index_name, $length = "", $dsn = "", $add = false) { 
     124    if($dsn == "") { 
     125        if(defined('DEFAULT_DSN')) { 
     126            $dsn = DEFAULT_DSN; 
     127        } else { 
     128            return; 
     129        } 
     130    } 
     131 
     132    // ¥Æ¡¼¥Ö¥ë¤¬Ìµ¤±¤ì¤Ð¥¨¥é¡¼ 
     133    if(!sfTabaleExists($table_name, $dsn)) return false; 
     134     
     135    $objQuery = new SC_Query($dsn, true, true); 
     136    // Àµ¾ï¤ËÀܳ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç 
     137    if(!$objQuery->isError()) { 
     138        list($db_type) = split(":", $dsn);       
     139        switch($db_type) { 
     140        case 'pgsql': 
     141            $arrRet = $objQuery->getAll("SELECT relname FROM pg_class WHERE relname = ?", array($index_name)); 
     142            break; 
     143        case 'mysql': 
     144            $arrRet = $objQuery->getAll("SHOW INDEX FROM ? WHERE Key_name = ?", array($table_name, $index_name));            
     145            break; 
     146        default: 
     147            break; 
     148        } 
     149        // ¤¹¤Ç¤Ë¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬Â¸ºß¤¹¤ë¾ì¹ç 
     150        if(count($arrRet) > 0) { 
     151            return true; 
     152        } 
     153    } 
     154     
     155    // ¥¤¥ó¥Ç¥Ã¥¯¥¹¤òÄɲ乤ë 
     156    if($add){ 
     157        switch($db_type) { 
     158        case 'pgsql': 
     159            $objQuery->query("CREATE INDEX ? ON ? (?)", array($index_name, $table_name, $col_name)); 
     160            break; 
     161        case 'mysql': 
     162            $objQuery->query("CREATE INDEX ? ON ? (?(?))", array($index_name, $table_name, $col_name, $length));             
     163            break; 
     164        default: 
     165            break; 
     166        } 
     167        return true; 
     168    }    
    119169    return false; 
    120170} 
Note: See TracChangeset for help on using the changeset viewer.