Мне нужно добавить ограничение к таблице, чтобы столбец ab всегда был больше столбца h. Я попыталсяAdd Check Ограничение не работает SQL
ALTER TABLE batting
ADD constraint possibleHits check (ab>h);
Но что возвращает
ERROR: check constraint "possiblehits" is violated by some row
********** Error **********
ERROR: check constraint "possiblehits" is violated by some row
SQL state: 23514
как ошибка.
Я бежал
select * from batting where ab<h
и не возвращает ни одной строки.
Любые идеи о том, что я делаю неправильно? или есть способ сделать что-то вроде добавить
NOT VALID
на заявление так, что оно не будет применять ограничение на существующие строки? Я знаю, что это работает в mysql, но в postgres он работает только с ключами.
EDIT:
Итак, как было отмечено, есть случаи, когда аб = ч, однако есть способ, чтобы исключить существующие строки из ограничений?
могут быть некоторые существующие строки, где ab = h ?? – BWS
@BWS есть около 6000 строк, где ab = h (попадает на стол, чтобы не видеть очевидного) – thermite
Вы можете добавить столбец 'is_old' в таблицу, а затем проверить' ab> h или is_old' –