[英]MySQL Database Unique Column Names
我为自己编写了一个PHP脚本,以帮助管理一个由10个成员组成的小组。 该脚本当前连接到数据库,并每周更新一次,以更新任何等级和功率更改。 但是,我想对此进行扩展,并在一个新表中,将获得的所有功能保留在单独的列中,而不是全部累加。
我能想到的唯一方法是使用以下代码创建列并更改每个列的名称。
ALTER TABLE `power gained` ADD timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP AFTER name;
所以我的问题是,我可以创建列以确保其名称唯一吗,还是可以将列名称设置为时间戳,这样可以为我节省一列。
我还想弄清楚我正在使用mysql_函数,因为它在我的本地系统上,不容易受到攻击,而且我也不愚蠢到会犯错误。
使用规范化。
将用户和权限分为两个差异表。
CREATE TABLE `users_power` (
`user_id` smallint(5) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`total_power` int(11) NOT NULL DEFAULT '1',
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
CREATE TABLE `power` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` smallint(1) NOT NULL,
`time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`power_increase` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
DROP TRIGGER IF EXISTS `Update users_power`;
CREATE TRIGGER `Update users_power` AFTER INSERT ON `power` FOR EACH ROW BEGIN
UPDATE `users_power` AS `UP`
SET `UP`.`total_power` = `UP`.`total_power` + NEW.`power_increase`
WHERE `UP`.`user_id` = NEW.`user_id`;
END
然后向上看,做类似的事情;
SELECT `power` AS total_power
FROM users_power
WHERE users_power.`user_id` = 1
你的结构看起来像;
select * from power where user_id = 1;
+----+---------+---------------------+----------------+
| id | user_id | time | power_increase |
+----+---------+---------------------+----------------+
| 1 | 1 | 2014-08-7 17:04:06 | 5 |
| 2 | 1 | 2014-08-15 17:04:31 | 15 |
+----+---------+---------------------+----------------+
2 rows in set
select * from users_power where user_id = 1;
+---------+------+-------------+
| user_id | name | total_power |
+---------+------+-------------+
| 1 | joe | 21 |
+---------+------+-------------+
1 row in set
power
尚未对此进行测试,但我想我已经找到一种可以以我理解的方式进行此操作的方法(这是最重要的部分)。
$now = date('Y-m-d');
mysql_query("ALTER TABLE `power gained` ADD `$now` VARCHAR(22) AFTER name");
// ...
mysql_query("UPDATE `power gained` (`$now`) VALUES($gained) WHERE id = $i");
我不希望从数据库中提取数据,因为我可以通过访问localhost / phpmyadmin来访问它,而我永远都不需要提取它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.