Cơ sở dữ liệu Postgres 9.1 chứa bảng yksus1 .. ykssu9 trong lược đồ công khai. pgAdmin hiển thị các định nghĩa như trong mã bên dưới. Làm thế nào để chuyển các bảng đó sang lược đồ firma1?cách di chuyển bảng từ công khai sang giản đồ khác trong Postgres
Các bảng khác trong lược đồ firma1 có tham chiếu khóa ngoài với các khóa primay bảng. Tham chiếu khóa ngoài cho các bảng này chỉ từ các bảng trong lược đồ firma1.
Một số bảng có chứa dữ liệu. Nếu các bảng được chuyển sang lược đồ firma1, các tham chiếu khóa ngoài shouuld cũng được cập nhật thành các bảng firma1.yksusn. Cấu trúc bảng không thể thay đổi.
Dường như chuỗi khóa chính đã có trong lược đồ firma1, vì vậy, các lược đồ đó không được di chuyển. Version chuỗi PostgreSQL 9.1.2 trên x86_64-biết-linux-gnu, biên soạn bởi gcc-4.4.real (Debian 4.4.5-8) 4.4.5, 64-bit
CREATE TABLE yksus1
(
yksus character(10) NOT NULL DEFAULT ((nextval('firma1.yksus1_yksus_seq'::regclass))::text || '_'::text),
veebis ebool,
nimetus character(70),
"timestamp" character(14) DEFAULT to_char(now(), 'YYYYMMDDHH24MISS'::text),
username character(10) DEFAULT "current_user"(),
klient character(40),
superinden character(20),
telefon character(10),
aadress character(50),
tlnr character(15),
rus character(60),
CONSTRAINT yksus1_pkey PRIMARY KEY (yksus)
);
ALTER TABLE yksus1
OWNER TO mydb_owner;
CREATE TRIGGER yksus1_trig
BEFORE INSERT OR UPDATE OR DELETE
ON yksus1
FOR EACH STATEMENT
EXECUTE PROCEDURE setlastchange();
bảng khác cũng tương tự như:
CREATE TABLE yksus2
(
yksus character(10) NOT NULL DEFAULT ((nextval('firma1.yksus2_yksus_seq'::regclass))::text || '_'::text),
nimetus character(70),
"timestamp" character(14) DEFAULT to_char(now(), 'YYYYMMDDHH24MISS'::text),
osakond character(10),
username character(10) DEFAULT "current_user"(),
klient character(40),
superinden character(20),
telefon character(10),
aadress character(50),
tlnr character(15),
rus character(60),
CONSTRAINT yksus2_pkey PRIMARY KEY (yksus),
CONSTRAINT yksus2_osakond_fkey FOREIGN KEY (osakond)
REFERENCES yksus2 (yksus) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE NO ACTION DEFERRABLE INITIALLY IMMEDIATE
);
ALTER TABLE yksus2
OWNER TO mydb_owner;
CREATE TRIGGER yksus2_trig
BEFORE INSERT OR UPDATE OR DELETE
ON yksus2
FOR EACH STATEMENT
EXECUTE PROCEDURE setlastchange();
Hãy quan tâm đến các xung đột tên. Nếu bất kỳ bảng nào đang sử dụng cùng tên cho các chỉ mục, các ràng buộc, vv làm lược đồ đích, truy vấn sẽ thất bại. – Tim