gpt4 book ai didi

php - MySQL 数据库唯一列名

转载 作者:行者123 更新时间:2023-11-29 23:56:14 25 4
gpt4 key购买 nike

我自己编写了一个 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时自动更新总功率

关于php - MySQL 数据库唯一列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25329124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com