我正在使用名为Dolibarr的互联网应用程序,我想修改llx_cotisation
表中的MySQL条件。
此表格不允许每位成员使用相同的联合日期。例如,我不能在同一天支付2个不同的cotisations的会员。因为字段dateadh
对于成员来说可以是相同的。如果我尝试向第一个添加具有相同日期的其他cotisation,则会收到MySQL错误:
Duplicate entry '3-2016-01-01 00:00:00' for key 'uk_cotisation'
这是表结构:
mysql> describe llx_cotisation ;
+-------------+-----------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-----------+------+-----+-------------------+-----------------------------+
| rowid | int(11) | NO | PRI | NULL | auto_increment |
| tms | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| datec | datetime | YES | | NULL | |
| fk_adherent | int(11) | YES | MUL | NULL | |
| dateadh | datetime | YES | | NULL | |
| datef | date | YES | | NULL | |
| cotisation | double | YES | | NULL | |
| fk_bank | int(11) | YES | | NULL | |
| note | text | YES | | NULL | |
+-------------+-----------+------+-----+-------------------+-----------------------------+
9 rows in set (0.00 sec)
该字段为:dateadh
是否可以在那里复制价值?
php中的脚本部分如下:
// List of subscriptions
$sql = "
SELECT d.rowid
, d.login
, d.firstname
, d.lastname
, d.societe
, c.rowid as crowid
, c.cotisation
, c.dateadh
, c.datef
, c.fk_bank as bank
, c.note
, b.fk_account
FROM ".MAIN_DB_PREFIX."adherent as d
, ".MAIN_DB_PREFIX."cotisation as c
LEFT
JOIN ".MAIN_DB_PREFIX."bank as b
ON c.fk_bank=b.rowid
WHERE d.rowid = c.fk_adherent
";
if (isset($date_select) && $date_select != '')
{
$sql.= " AND c.dateadh LIKE '".$date_select."%'";
}
if ($search_ref)
{
if (is_numeric($search_ref)) $sql.= " AND (c.rowid = ".$db->escape($search_ref).")";
else $sql.=" AND 1 = 2"; // Always wrong
}
非常感谢你,如果你能帮助我,我很抱歉我的英语非常糟糕:/
编辑:这是命令的结果:show create table llx_cotisation
| llx_cotisation | CREATE TABLE `llx_cotisation` (
`rowid` int(11) NOT NULL AUTO_INCREMENT,
`tms` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`datec` datetime DEFAULT NULL,
`fk_adherent` int(11) DEFAULT NULL,
`dateadh` datetime DEFAULT NULL,
`datef` date DEFAULT NULL,
`cotisation` double DEFAULT NULL,
`fk_bank` int(11) DEFAULT NULL,
`note` text,
PRIMARY KEY (`rowid`),
UNIQUE KEY `uk_cotisation` (`fk_adherent`,`dateadh`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 |
解决方案:
我删除了UNIQUE KEY,它看起来效果很好!