以下是包含3列的示例表(ID,UNIQUE_VALUE,UNIQUE_GROUP_ID)
我希望以下记录可以被允许:
(1, NULL, NULL)
(2, NULL, NULL)
Run Code Online (Sandbox Code Playgroud)
要么
(3, NULL, 7)
(4, 123, 7)
Run Code Online (Sandbox Code Playgroud)
或(注:此条件中不允许unique index,也没有unique constraint)
(5, NULL, 7)
(6, NULL, 7)
Run Code Online (Sandbox Code Playgroud)
这些是不允许的:
(7, 123, 7)
(8, 123, 7)
Run Code Online (Sandbox Code Playgroud)
我在最后2列创建了一个唯一索引,但只允许前两个示例.
是否可以让db只在两者都不为空时检查这两列的唯一性?
我使用的是Oracle 11g,主表有大约1000万条记录.这是我的查询:
SELECT COUNT (*)
FROM CONTACT c INNER JOIN STATUS S ON C.STATUS = S.STATUS
WHERE C.USER = 1 AND S.REQUIRE = 1 AND ROWNUM = 1;
Run Code Online (Sandbox Code Playgroud)
成本是3736,但当我将其更改为此形式时:
SELECT COUNT (*) FROM
(SELECT 1 FROM CONTACT c INNER JOIN STATUS S ON C.STATUS = S.STATUS
WHERE C.USER = 1 AND S.REQUIRE = 1 AND ROWNUM = 1);
Run Code Online (Sandbox Code Playgroud)
成本变为5!这两个查询有什么区别?
以下是两个查询的解释计划:
第一个查询:
----------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------------------------------
| 0 …Run Code Online (Sandbox Code Playgroud) 今天我发现TextBox.Text有一个奇怪的问题,如果字符串长度太大,文本框看起来就像是空的,但实际上我仍然可以选择/复制/粘贴,只是看不到字符.
我写了一个小的winform来测试它,我发现如果字符串长度超过5460,问题就出来了.
我使用的是Win7 64,VS2010.我知道在单行文本框中显示如此大的字符串是没有意义的,但我想知道根本原因.
而且我也注意到它在Win2008中没有发生,即使在Win7中我使用屏幕录像机时问题也消失了!太奇怪了!
页面上的同一组中有2个单选按钮:
<asp:RadioButton ID="RadioButton1" runat="server" GroupName="Group1"/>
<asp:RadioButton ID="RadioButton2" runat="server" GroupName="Group1"/>
Run Code Online (Sandbox Code Playgroud)
在代码behined中,我编写代码来检查两个单选按钮:
RadioButton1.Checked = true;
RadioButton2.Checked = true;
Run Code Online (Sandbox Code Playgroud)
我认为这RadioButton1.Checked将是false因为他们在同一组,当我检查第二个,第一个将自动取消选中.但实际上,他们都是Checked=true.
在我的应用程序中,有一个像这样的switch-case:
// Some code to check the default RadioButton
switch(val){
case 1:
RadioButton1.Checked = true;
case 2:
RadioButton2.Checked = true;
}
Run Code Online (Sandbox Code Playgroud)
所以有时两个单选按钮Checked都是真的.这很奇怪,所以我将代码更改为:
switch(val){
case 1:
RadioButton1.Checked = true;
RadioButton2.Checked = false;
case 2:
RadioButton1.Checked = false;
RadioButton2.Checked = true;
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,但如果我需要添加10个单选按钮,写一个长列表= true,= false .....?
有任何想法吗?谢谢!
今天,有人告诉我,我们应该始终将每个例外都包含在框架的顶层.原因是原始异常可能包含堆栈跟踪或消息中的敏感信息,尤其是堆栈跟踪.
我不知道,有没有任何规则/原则/模式?
我知道java Date的设计很差,但是直到今天我都不知道。
我将日期保存到数据库中,当我从数据库中获取日期并与原始日期进行比较时,它告诉我这是不同的!
我写了一个看起来很奇怪但合格的测试!
@Test
public void date_equals() {
Date now = new Date();
Timestamp timestamp = new Timestamp(now.getTime());
assertFalse(timestamp.equals(now));
assertTrue(now.equals(timestamp));
assertTrue(timestamp.compareTo(now) == 0);
assertFalse(now.compareTo(timestamp) == 0);
assertTrue(timestamp.getTime() == now.getTime());
assertTrue(now.getTime() == timestamp.getTime());
}
Run Code Online (Sandbox Code Playgroud)
我注意到java.sql.Timestamp与Date稍有不同,我不在乎。
谁能告诉我如何比较这两种最佳做法?我不想在任何地方都比较日期使用getTime()的情况,是否有任何通用库或其他方法可以做到这一点?
顺便说一句,我正在使用JDK 6