我有一张桌子 drug_interaction(drug1_id,drug2_id)
我想知道是否可以在不考虑值顺序的情况下具有唯一的drug1_id和drug2_id对。例如,如果表中已经存在(1,2) 然后不允许插入(2,1)。
答案 0 :(得分:0)
这在MySQL中很难做到。在许多数据库中,您可以使用check
约束条件来确保药物有序:
check (drug1_id < drug2_Id)
但是,MySQL实际上并没有强制执行这些约束。
执行此操作的唯一方法是在表上使用触发器。
答案 1 :(得分:0)
一种方法是创建两个计算列,分别在每个记录上存储最小drug_id
和最大create table drug_interaction(
drug1_id int ,
drug2_id int,
drug_least int as (least(drug1_id, drug2_id)) stored,
drug_greatest int as (greatest(drug1_id, drug2_id)) stored,
unique key unique_drugs (drug_least, drug_greatest)
)
,并对它们施加唯一约束。
考虑:
insert into drug_interaction(drug1_id, drug2_id) values(1, 2)
-- ok
insert into drug_interaction(drug1_id, drug2_id) values(2, 1)
-- error: Duplicate entry '1-2' for key 'unique_drugs'
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim Findstring = IO.File.ReadAllText("C:\Users\JBP-Admin\Desktop\Pugad\Mobile Support\catch.txt")
Dim Lookfor As String = showdat.Text
If Findstring.Contains(Lookfor) Then
MsgBox("Found: " & Lookfor)
End If
End Sub
Public Sub Timer1_Tick(sender As Object, e As EventArgs) Handles DateAndTime.Tick
DateAndTime.Start()
' Me.Text = DateAndTime.Now.ToString("MM/dd/yyyy hh:mm:ss tt")
showdat.Text = Format(Now, "MM/dd/yyyy hh:mm:ss tt")
End Sub
Private Sub Label1_Click(sender As Object, e As EventArgs) Handles showdat.Click