簡體   English   中英

獲取插入外鍵值的最佳方法 SQLite c#

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM