"req"라는 열이있는 "xxx"테이블이 있습니다. 이 열에 "req"나는 항상 다음과 같은 방식으로 자동으로 생성 된 값을 취하고 싶습니다. 열 "req"값 Ref_0001, 다른 삽입 후 Ref_0002, Ref_0003 ... ... 시도해 봅니다.PostgreSQL의 트리거가 기본값을 허용하지 않습니다
CREATE SEQUENCE seq_ref;
CREATE TABLE dossier
(
ref TEXT NOT NULL PRIMARY KEY DEFAULT 'ref' || LPAD(NEXTVAL('seq_ref')::TEXT, 10, '0'),
value TEXT
);
삽입 새로운 라인에 내 응용 프로그램과 그렇지 않은 잘 작동이 솔루션 .. : 당신이 제로 패딩 번호를 원하는 경우 @Craig 벨소리에 대한 첫 번째 솔루션 들으
CREATE SEQUENCE seq_ref;
CREATE TABLE dossier
(
ref TEXT NOT NULL PRIMARY KEY DEFAULT 'ref' || NEXTVAL('seq_ref'),
value TEXT
);
, 이것을 사용 하지만 pgAdmin을 삽입하려고하면 테이블을 새로 고칠 때까지는 열이 비어 있습니다. 그래서 함께 작업하려고합니다. 방아쇠.
필자는 내 문제를 해결하기 위해 마침내 PostgreSQL에서 트리거를 생성합니다. 열 req에 대한 값 생성이 양식 Ref00001, Ref0002 ...하지만 변경되지 않습니다. 작동하지 않습니다; 여전히 빈 열 :
CREATE table test(
id serial primary key,
non varchar(12),
req varchar(12)
);
CREATE OR REPLACE FUNCTION Start_generate() RETURNS trigger AS $emp_stamp$
BEGIN
NEW.req := ('ref'::text || lpad((nextval('seq_refcomposant'::regclass))::text, 6, '0'::text));
return null;
END;
$emp_stamp$ LANGUAGE plpgsql;
CREATE TRIGGER Generate_ref AFTER INSERT ON test
FOR EACH ROW EXECUTE PROCEDURE Start_generate();
내가
NEW.req := DEFAULT ('ref'::text || lpad((nextval('seq_refcomposant'::regclass))::text, 6, '0'::text));
에 기본을 추가 ... 작동하지 않는 이유를 알 수없는 에러가 기본에있다!
원하는 효과를 얻으려면 어떻게해야합니까? 절차에서`NEW`를 반환으로 시도 :
절대 추측을 'null'보다는 오히려. –
어떻게해야합니까? –
나는 내 질문을 이해하지 못해서 이해한다. – FERESSS