我的数据库中有很多表,但我的问题是这两个表:
这些的定义是:
Employee (EmployeeID_PK, FirstName, LastName, Email, ...)
Order (OrderID_PK, EmployeeID_FK, OrderDate, MenuID, ...)
*_PK = Primary Key
*_FK = Foreign Key
现在我想删除一个员工,这样他就不能再登录了,但我仍然需要他的订单和他的属性(比如FirstName,LastName,......)。
因此数据应保留在表格中,但员工不应再登录了。
我知道向Employee添加“isactive”列将是一个解决方案,但我认为这不是最好的方法。无论如何,请告诉我,如果这是唯一的方法。
提前致谢!
答案 0 :(得分:1)
通过修改现有表(例如,通过向表或其他任何内容添加列)来解决 这种情况。
相反,这是完全什么"锁定用户帐户"是为了。您可以锁定用户的帐户,因此他或她无法再登录,但她或他的架构(意味着所有他或他的对象,如表,索引,视图等)保持原样。
https://docs.oracle.com/database/121/ADMQS/GUID-6A8D4A59-6DB2-4662-BA4C-05B914D31B4F.htm#ADMQS12042
https://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_4003.htm#SQLRF01103
答案 1 :(得分:-1)
如你所说,一个选项是status
列 - 1表示活动,0表示非活动,2表示登录被阻止可能是。
如果您不想采用这种方法,您可以创建主表和辅助表(Employee_Archive
和Order_Archive
的副本,并使用等效的pk和fk约束)并同时移动那里的数据集。这样,用户就无法再登录,也不会丢失数据并保留完整性。
如果Order
表中的数据太多,您可能仍然只剩下第一种方法 - 添加status
列。