약간의 업데이트를 제공하려는 오래된 데이터베이스가 있습니다.
이전 데이터베이스에는 코드에서 (잘못 처리 된) DEFAULT 또는 NOT NULL과 같은 열 제약 조건이 없었습니다. 새 데이터베이스의 경우 필요한 곳에 이러한 제약 조건을 추가하여 클라이언트 측 코드를 삭제하고 sqlite가 처리하도록했습니다.
이제 문제는 NULL 값이 정상적으로 전송되거나 NOT NULL 제약 조건의 경우 오류가 발생하는 전환입니다.
그래서 내 질문은 : 한 테이블에서 다른 테이블로 값을 전송하고 모든 NULL 값을 새 열의 기본값으로 변경하는 방법은 무엇입니까?
현재 이것은 내 (Python) 코드입니다.
self.cursor.execute("CREATE TEMP TABLE tmp_%s AS SELECT * FROM %s" % (table, table))
self.cursor.execute("DROP TABLE %s" % table)
self.cursor.execute("CREATE TABLE IF NOT EXISTS %s (%s)" % (table, get_columns(table)))
self.cursor.execute("INSERT INTO %s SELECT * FROM tmp_%s" % (table, table))
self.cursor.execute("DROP TABLE tmp_%s" % table)
데이터베이스에는 많은 테이블이 있으므로 주어진 테이블 이름에서 SQL을 생성하는 도우미 함수입니다.
몇 가지 옵션이 있습니다. 업데이트를 실행할 수 있습니다.
update table set null_column = default_value where null_column is null
또는 선택에서 열을 나열하고 병합을 사용할 수 있습니다.
select not_null_column, coalesce(null_column, default_value) from table
삽입하기 전에 null 값이 아닙니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다