假设我有一个表格,其中有三列——A、B和C。我想确保如果我向列A插入某个值(比如x),我就不能插入一个元组,其中B或C等于x,即对于所有元组,值x应该仅在列A中唯一。
请注意,x可以在A中重复出现,但对于其他的元组,其B或C不能等于x。
我知道SQL中有UNIQUE子句,但它只能确保一个值仅在特定列中出现一次。由于Oracle中的CHECK语句不允许子查询,我无法弄清如何实现这一点。
编辑(添加更多信息):
主键是Employee_Number,而涉及到的3列分别是LandlineNo、MobileNo和VOIP。因此,假设这是一个条目:
那么另一个元组的这个条目将不被允许 -
另一方面,这个是可以的(是的,两个员工可以拥有相同类型和数量的编号)。
请注意,x可以在A中重复出现,但对于其他的元组,其B或C不能等于x。
我知道SQL中有UNIQUE子句,但它只能确保一个值仅在特定列中出现一次。由于Oracle中的CHECK语句不允许子查询,我无法弄清如何实现这一点。
编辑(添加更多信息):
主键是Employee_Number,而涉及到的3列分别是LandlineNo、MobileNo和VOIP。因此,假设这是一个条目:
Employee_Number = 1, LandlineNo = x, MobileNo = y, VOIP = z
那么另一个元组的这个条目将不被允许 -
Employee_Number = 2, LandlineNo = a, MobileNo = x, VOIP = c
另一方面,这个是可以的(是的,两个员工可以拥有相同类型和数量的编号)。
Employee_Number = 2, LandlineNo = x, MobileNo = b, VOIP = c