0

讓我們看看簡單的例子(從here簡化的示例):SQLite:表關係外鍵是否在所有與之相關的表中自動更改?

CREATE TABLE [Employees](
     [EmployeeID] nchar(5) primary key, 
     [ReportsTo] nchar(5) NULL, 
    constraint fk_Employees_Employees foreign key(ReportsTo) references Employees(EmployeeID) 
); 

CREATE TABLE [Orders](
     [OrderID] integer primary key autoincrement, 
     [EmployeeID] int NULL 
    constraint fk_Orders_Employees foreign key (EmployeeID) references Employees (EmployeeID) 
); 

我們有2個表,一個具有是相互關聯的,另一種涉及從第一表中的項目的項目。

想象一下,我們有一些「員工」和一些「訂單」會發生什麼命令和員工在更改時與某些EmployeeID有關?

假設我們有Tom和訂單1tom有關。我們將Tom更改爲Ben。現在1Ben會自動關聯,現在通過隱藏我們的SQLite magik,或者我們必須明確指出屬於Tom的所有訂單,他們現在是Ben了嗎?

回答

1

如果我正確理解你的要求,如果所有屬於TOM的訂單改爲BEN,那麼你必須更新表[常規]爲:

案例1:如果TOM不再在辦公室& TOM被BEN更換,那麼:

assuming that TOM's employeeId is 1 BEN's employeeId is 33 

UPDATE [Orders] 
SET EmployeeId = 33 
WHERE EmployeeId = 1 

情況2:如果TOM的僱員從1員工表改爲33,那麼你必須更新訂單表也(你問&我正在回答這裏,問題是爲什麼你需要改變TOM的員工ID? ):

assuming that TOM's employeeId is changed from 1 is 33 

UPDATE [Orders] 
SET EmployeeId = 33 
WHERE EmployeeId = 1 
+0

所以這意味着如果我們在Employees中只有TOM('1')並在表中將其更改爲'33',那麼我們仍然需要更新'Orders'表中的所有前TOM項目? – myWallJSON 2012-01-15 19:06:00

+0

如果員工表中的TOM ID從1更改爲33,則必須更新訂單表中的所有前TOM項目。 – 2012-01-16 02:47:10

相關問題