[英]Best way to get value for inserting into foreign key SQLite c#
例如,當您有兩個帶有外鍵的表時
CREATE TABLE departments
( department_id INTEGER PRIMARY KEY AUTOINCREMENT,
department_name VARCHAR
);
CREATE TABLE employees
( employee_id INTEGER PRIMARY KEY AUTOINCREMENT,
last_name VARCHAR NOT NULL,
first_name VARCHAR,
department_id INTEGER,
CONSTRAINT fk_departments
FOREIGN KEY (department_id)
REFERENCES departments(department_id)
);
然后當你像這樣插入數據時:
INSERT INTO departments VALUES (30, 'HR');
INSERT INTO departments VALUES (999, 'Sales');
INSERT INTO employees VALUES (10000, 'Smith', 'John', 30);
INSERT INTO employees VALUES (10001, 'Anderson', 'Dave', 999);
插入 emplyees 表時查找值 30 和 999 的最佳方法是什么?
這是一個使用 sqlite last_insert_id()
function 的示例(我將清理它以表明它確實是一個自動編號值,而不是您已經知道的部門編號):
begin transaction;
insert into departments (department_name) values ('HR');
insert into employees values (10000, 'Smith','John',last_insert_rowid());
insert into departments (department_name) values ('Sales');
insert into employees values (10001, 'Anderson','Dave',last_insert_rowid());
commit;
另一種策略是使用您的部門名稱,這樣您就可以完全避免擔心知道 ID(我假設您添加了一個唯一約束,以便部門名稱必須是唯一的——這是明智的):
insert into departments values (30, 'HR');
insert into departments values (999, 'Sales');
insert into employees
select
10000,
'Smith',
'John',
(select department_id
from departments
where department_name = 'HR');
insert into employees
select
10001,
'Anderson',
'Dave',
(select department_id
from departments where department_name = 'Sales');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.