2012-08-14 3 views
1

트리거 또는 제한을 통과 할 때 VARCHAR을 절단 연결 문자열에 매개 변수를 만들 수 있습니까?HSQLDB 자동 잘라 내기

나는 삽입/업데이트하기 전에 트리거를 만들려고했지만 나는 다음과 같은 예외가 계속 :

때 java.io.IOException : java.sql.BatchUpdateException : 데이터 예외 : 문자열 데이터 오른쪽 절단 를 org.apache.gora.sql.store.SqlStore.close에서 org.apache.gora.sql.store.SqlStore.flush (SqlStore.java:340) (SqlStore.java:185)에

고라는 내가 누치를 사용하기 때문에.

감사

EDIT1 :

트리거는 다음과 같습니다 새로운 AS를 참조 WEBPAGE ON UPDATE 전에 트리거 typeconversionUpdate을 만들 newrow EACH ROW의 SET newrow.TEXT = ''

그리고 생성을위한 성명 :

CREATE TABLE WEBPAGE (id VARCHAR(512) PRIMARY KEY,headers BLOB,text VARCHAR(32000),status INTEGER,markers BLOB,parseStatus BLOB,modifiedTime BIGINT,score FLOAT,typ VARCHAR(32),baseUrl VARCHAR(512),content BLOB(65536),title VARCHAR(512),reprUrl VARCHAR(512),fetchInterval INTEGER,prevFetchTime BIGINT,inlinks BLOB,prevSignature BLOB,outlinks BLOB,fetchTime BIGINT,retriesSinceFetch INTEGER,protocolStatus BLOB,signature BLOB,metadata BLOB) 
+0

시도한 CREATE TABLE 및 CREATE TRIGGER 문을 포함하십시오. – fredt

+0

질문에 추가 – Hugo

답변

1

가능한 해결책은 문제의 컬럼의 최대 크기를 주름 :

ALTER TABLE WEBPAGE ALTER COLUMN TEXT SET DATA TYPE VARCHAR(1000000) 

트리거 솔루션은 버전 2.2.9까지 HSQLDB와 함께 사용할 수 없습니다 만, 다음 버전에서 허용 될 수 있습니다.

+0

좋아, 다음 버전을 기다릴게. 그 사이에 나는 삽입 전에 자바 코드로 결과를 보여 주었다. 문자열이 매우 커질 수 있기 때문에 전체 varchar 길이를 변경하고 싶지는 않았습니다. 예를 들어 전체 HTML 페이지 일 수도 있지만, 첫 번째 문자 만 필요합니다. 감사합니다. – Hugo