Oracle - 基于两列防止重复

时间:2016-12-22 16:10:12

标签: oracle unique-constraint

假设我有一个表是一个像这样定义的Oracle 11g数据库

// should probably use namespacing here.
class GeneratorUtilClose {}

class GeneratorUtil {
    public static function close() {
        return new GeneratorUtilClose;
    }
}

function csv_output_generator($file) {
  $handle = fopen('file.csv', 'w');

  while (!(($row = yield) instanceof GeneratorUtilClose)) {
    fputcsv($handle, $row);
  }

  fclose($handle);
}

$output_generator = csv_output_generator($file);
$output_generator->send($rows[0]);
$output_generator->send(GeneratorUtil::close());

表中的数据如下所示:

CREATE TABLE LAKES.DEPARTMENTAL_READINGS
(
  ID NUMBER     NOT NULL,
  DEPT_ID       INTEGER NOT NULL,
  READING_DATE  DATE NOT NULL,
  VALUE         NUMBER(22,1)
):

如您所见,每个部门ID的每个日期都有一个条目。应该不会超过一个。我们有合并语句来处理我们的数据导入脚本,因此在拉入数据时大部分都会被阻止。但是,由于没有人知道谁可以继续为这个应用程序编写脚本,我们希望像可能。有没有办法设置约束来防止为每个dept_id / creation_date组合输入重复数据?

1 个答案:

答案 0 :(得分:0)

您可以在这两列上一起创建复合主键。这将通过抛出错误来拒绝插入。