2016-04-05 31 views
2

olduğunu kontrol edin Perl DBI kullanma, bir MySQL sütununun UNIQUE (UNIQUE kısıtlaması vardır) olup olmadığını (tablo adı ve sütun adı verildiğinde) nasıl kontrol edersiniz?Perl DBI MySQL: Sütunun UNIQUE

+0

Daha önce denediğiniz şeyi detaylandırarak daha fazla ve daha iyi yanıt alın. –

+0

@MartinCowie Ne denediğini açıklamak nasıl daha iyi cevaplar alır? İnsanlara, "kodum çalışmıyor, kod yazmama yardım et" dediğinde ne denediklerini sormak mantıklıdır, ancak burada hiçbir anlam ifade etmemektedir. Soru oldukça açık; Bir çözümde başarısız girişimlerle uğraşmak, sadece işe yaramaz parazit ekler. – ThisSuitIsBlackNot

+0

Lütfen bu bilgilerle ne yapmak istediğinizi açıklar mısınız? Sizin için daha doğru bir cevabı formüle etmemize yardımcı olacaktır. Bir programın akışını temel alan garip bir şey gibi görünüyor – Borodin

cevap

2

Bu işlev, UNIQUE kısıtlaması olan sütunlar için true, aksi takdirde yanlış yazılmalıdır.

Girdi değerleri DBI (mysql) nesnesi, tablo adı ve sütun adıdır.

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; 
} 
İlgili konular