Tôi là một người mới nên hy vọng một số kiên nhẫn. :)
Tôi đang cố gắng điền vào hai bảng nếu một giá trị không tồn tại. Về cơ bản tôi có:
TABLE b
(
id VARCHAR(254) PRIMARY KEY NOT NULL
);
TABLE d
(
id VARCHAR(254) PRIMARY KEY NOT NULL,
relay INT NOT NULL,
FOREIGN KEY ( relay ) REFERENCES b ( id )
);
vì vậy tôi đang cố gắng viết một hàm điền vào hai bảng một giá trị mới, nếu nó không tồn tại hoặc bỏ qua nó, nếu không ... tất nhiên được bao bọc trong một giao dịch:
IF (NOT EXISTS(SELECT * FROM b where id='something'))
insert into b values('something')
insert into d values(1, 'something')
END
Cách hiệu quả nhất để đạt được những thứ như thế này là gì? Nếu vấn đề quan trọng, tôi đang sử dụng POstgreSQL 9.1 nhưng tôi muốn giữ nó khá chung chung.
(EDIT) Đây là các định nghĩa bảng hiện tại của tôi (được đơn giản hóa cho mục đích minh họa):
object d extends Table[(String, String, Int)]("d")
{
def id=column[String]("id", O.PrimaryKey)
def relay=column[Int]("relay")
def relay_ref=foreignKey("d2b.fk", relay, b)(_.id)
def * = id ~ relay
}
object b extends Table[(String)]("b")
{
def id=column[String]("id", O.PrimaryKey)
def * = id
}