2016-04-05 15 views
2

Perl DBIを使用して、MySQLのカラムがUNIQUE(UNIQUE制約があります)であるかどうかをチェックする方法はありますか?Perl DBI MySQL:カラムがユニークであることを確認してください

+0

すでにお試しいただいた内容を詳しく説明することで、より良い回答を得ることができます。 –

+0

@MartinCowie彼が何を試したのかを説明すると、より良い答えが得られるでしょうか? 「自分のコードが機能していない、デバッグに役立つ」というコードを含めずに、何を試したのかを人々に尋ねるのは理にかなっていますが、ここでは意味がありません。問題はかなり明確です。解決策で失敗した試行錯誤でそれを乱雑にすると、無駄なノイズが追加されるだけです。 – ThisSuitIsBlackNot

+0

あなたはこの情報をどうしたいのですか?それは私たちがあなたのためにより正確な答えを定式化するのに役立ちます。プログラムの流れを基にするのは奇妙なことです – Borodin

答えて

2

この関数は、UNIQUE制約を持つ列に対してはtrueを返し、そうでない場合にはfalseを返します。

入力値はDBI(mysql)オブジェクト、テーブル名、カラム名です。

sub check_uniq { 
    my ($dbh, $table, $column) = @_; 
    $table =~ s/\`//; 
    $table = '`' . $table . '`'; 
    my $sth = $dbh->prepare('SHOW INDEX FROM ' . $table); 
    $sth->execute(); 
    while (my $row = $sth->fetchrow_hashref) { 
     if (($row->{Column_name} eq $column) && (!$row->{Non_unique})) { 
      return 1; 
     } 
    } 
    return 0; 
} 
関連する問題