Mysql Trigger Insert row Another Table using matching data - mysql

I have 3 tables:
CREATE TABLE `UrunPaketDetay`(
`UrunPaketDetay` int NOT NULL AUTO_INCREMENT,
`UrunPaketNo` int NULL,
`Tarih` date NULL,
`Barkod` varchar(14) NOT NULL,
`Urun` varchar(50) NULL,
`SunumSekli` varchar(50) NULL,
`IslemeSekli` varchar(50) NULL,
`PaketlemeSekli` varchar(50) NULL,
`Kalibre` varchar(50) NULL,
`Kilo` double NULL,
`GlazeOran` varchar(50) NULL,
`Uretici` varchar(190) NULL,
`PaletKod` varchar(50) NULL,
PRIMARY KEY (`UrunPaketDetay`)
)CHARACTER SET utf8;
CREATE TABLE `CkisEks`(
`CikId` int NOT NULL AUTO_INCREMENT,
`Tarih` date NULL,
`Musteri` varchar(190) NULL,
`TeslimatYer` varchar(50) NULL,
`CikisSaati` time NULL,
`AracPlakasi` varchar(18) NULL,
`AracTel` varchar(16) NULL,
`KonteynirNo` varchar(50) NULL,
`PaletKod` varchar(12) NULL,
`Kilo` double NULL,
PRIMARY KEY (`CikId`)
)CHARACTER SET utf8;
CREATE TABLE `Ckis_Detay`(
`CD_Id` int NOT NULL AUTO_INCREMENT,
`CikId` int NULL,
`Barkod` varchar(50) NULL,
`Urun` varchar(50) NULL,
`Kalibre` varchar(50) NULL,
`Kilo` double NULL,
`Uretici` varchar(50) NULL,
`Musteri` varchar(190) NULL,
`PaletKod` varchar(50) NULL,
`Tarih` date NULL,
PRIMARY KEY (`CD_Id`)
)CHARACTER SET utf8;
I fill up my first table. After on 2nd table I call PaletKod row. PaletKod row autofill Kilo Row on 2nd table from 1st table.
But I need when I fill PaletKod to my 2nd table how can I select Paletkod from first table and fill my 3rd table values (Uretici, Urun, Kilo, Kalibre )?
I need trigger code. Can you help?

From My Understanding to do this,
DELIMITER $$
CREATE TRIGGER Insert_UrunPaketDetay
AFTER INSERT ON UrunPaketDetay
FOR EACH ROW
INSERT INTO Ckis_Detay (Uretici,Urun,Kilo,Kalibre)
VALUES
(UrunPaketDetay.Uretici,UrunPaketDetay.Urun
,UrunPaketDetay.Kilo,UrunPaketDetay.Kalibre);
END$$
DELIMITER ;
Try this code

Related

MySQL ALTER TABLE increase column varchar size - 0 row(s) affected?

I am trying to test out MySQL alter table to increase varchar column size.
VARCHAR(50) -> VARCHAR(100)
I try to execute command -> ALTER TABLE profile CHANGE COLUMN username username VARCHAR(100) DEFAULT NULL;
MySQL response complete with 0 row(s) affected. How is that possible?
Shouldn't increase varchar size will impact all rows within the table?
I hope to know why MySQL can process this alter table command so fast.
Below is my table script, there are total of 9209 rows.
CREATE TABLE `mytable` (
`userprofileseqid` VARCHAR(50) NOT NULL,
`clientdeviceseqid` VARCHAR(50) NOT NULL,
`userid` VARCHAR(50) NOT NULL,
`username` VARCHAR(100) DEFAULT NULL,
`usermobileno` VARCHAR(30) DEFAULT NULL,
`userstatus` VARCHAR(11) DEFAULT NULL,
`type` VARCHAR(30) DEFAULT NULL,
`role` VARCHAR(30) DEFAULT NULL,
`buscode` VARCHAR(50) DEFAULT NULL,
`distname` VARCHAR(100) DEFAULT NULL,
`distcode` VARCHAR(30) DEFAULT NULL,
`hqmobileno` VARCHAR(50) DEFAULT NULL,
`otpsubmissionblocked` INT(11) DEFAULT NULL,
`channel` VARCHAR(11) DEFAULT NULL,
`createddate` DATETIME NOT NULL,
`dealerstatus` VARCHAR(11) DEFAULT NULL,
`dealername` VARCHAR(100) DEFAULT NULL,
`email` VARCHAR(50) DEFAULT NULL,
`userfullname` VARCHAR(200) DEFAULT '',
PRIMARY KEY (`userprofileseqid`),
UNIQUE KEY `userprofile_unique_index` (`clientdeviceseqid`,`userid`,`usermobileno`)
) ENGINE=INNODB DEFAULT CHARSET=latin1
I try on both MySQL version 5.7.20 & 8.0.28, both return 0 row(s) affected.
However, when downgrade the varchar size VARCHAR(100) -> VARCHAR(50), it will show 9209 row(s) affected without issue.

By using query, how do I create a table in a database instead of a schema in SSMS

I know using the CREATE TABLE [example_schema].[example table] creates the table in the schema but I want to create the table in a database instead, but I don't know the syntax
CREATE TABLE Royal_Poly_DB.staff_relation (
"staff_no" CHAR(4) NOT NULL,
"staff_name" VARCHAR(100) NOT NULL,
"supervisor" CHAR(4) NULL,
"dob" DATE NOT NULL,
"grade" CHAR(5) NOT NULL,
"marital_status" CHAR(1) NOT NULL,
"pay" DECIMAL(7,2) NULL,
"allowance" DECIMAL(7,2) NULL,
"hourly_rate" DECIMAL(7,2) NULL,
"gender" CHAR(1) NOT NULL,
"citizenship" VARCHAR(10) NOT NULL,
"join_yr" INT NOT NULL,
"dept_cd" VARCHAR(5) NOT NULL,
"type_of_employment" CHAR(2) NOT NULL,
"highest_qln" VARCHAR(10) NOT NULL,
"designation" VARCHAR(20) NOT NULL,
PRIMARY KEY (staff_no))
Right click the database in the object explorer and select
"New Query" then add in you code there

how to calculate the number of a table's rows changed(update or insert) in a day on mysql

I have a trade records table and i want to calculate the rows of this table changed including update or insert.
I have check the information_schema in mysql.There is a table called TABLE and it has a column TABLE_ROWS.But i didn't find anything helpful.
well,this table like this
CREATE TABLE pre_actived_apk_record
(
id INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
appid VARCHAR(255) NOT NULL,
channelid VARCHAR(255) NOT NULL,
uid INT(11) NOT NULL,
appname VARCHAR(255) NOT NULL,
packagename VARCHAR(255) NOT NULL,
versioncode VARCHAR(255) NOT NULL,
versionname VARCHAR(255) NOT NULL,
brand VARCHAR(255) NOT NULL,
model VARCHAR(255) NOT NULL,
imei VARCHAR(255) NOT NULL,
sys_version VARCHAR(255) NOT NULL,
mac_address VARCHAR(255) NOT NULL,
imsi VARCHAR(255) NOT NULL,
iccid VARCHAR(255) NOT NULL,
uploadtime INT(11) NOT NULL,
dateline INT(11) NOT NULL,
rule INT(11) NOT NULL,
price INT(11) NOT NULL
);
And i wonder i could use some built-in method to show the result of this table chanaged.

MySQL Composite Keys Integrity

I have this table
CREATE TABLE `inventario` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`cla` varchar(100) NOT NULL,
`des` varchar(500) NOT NULL,
`lin` varchar(3) NOT NULL,
`cal` varchar(20) NOT NULL,
`uen` varchar(20) NOT NULL,
`can` double NOT NULL,
`fei` varchar(10) NOT NULL,
`fec` varchar(10) NOT NULL,
`obs` varchar(500) NOT NULL,
`ppu` double NOT NULL,
`pl1` double NOT NULL,
`pl2` double NOT NULL,
`pl3` double NOT NULL,
`pl4` double NOT NULL,
`prm` double NOT NULL,
`pr1` varchar(50) NOT NULL,
`pr2` varchar(50) NOT NULL,
`mnm` double NOT NULL,
`max` double NOT NULL,
`dias` int(10) NOT NULL DEFAULT '1',
`categoria` varchar(50) NOT NULL,
PRIMARY KEY (`id`,`cla`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
Id and cla are primary keys, but I need to keep the integrity and this structure allows duplicate "cla" values: F/e:
Id | Cla
01 | ADI001
02 | ADI001
And I need to avoid repeating the "cla" value in spite of the "id" value, how can I do that? Thanks.
Create a unique index on cla. Add the line:
unique key cla

Mysql Syntax error, unexpected NULL_SYM, expecting '('

I am trying to create a table but keep getting this Syntax error: unexpected NULL_SYM, expecting '(' error.
CREATE TABLE `project` (
`project_id` int UNSIGNED NOT NULL AUTO_INCREMENT,
`project_name` varchar NULL,
`location` varchar NULL,
`date` datetime NULL,
`status` varchar NULL,
`specifier` varchar NULL,
`supplier` varchar NULL,
`cost` float NULL,
`sales_amount` float NULL,
`estimate_qty` float NULL,
`unit` varchar NULL,
`proposed_office` varchar NULL,
`proposed_person` int NULL,
`followed_office` varchar NULL,
`followed_person` int NULL,
`remark` varchar NULL,
PRIMARY KEY (`project_id`)
);
The error is at 'project_name' varchar NULL,
You need to specify the length of your varchar columns. Example
`project_name` varchar(100) NULL
It could look like this
CREATE TABLE `project`
(
`project_id` int UNSIGNED NOT NULL AUTO_INCREMENT,
`project_name` varchar(100) NULL,
`location` varchar(100) NULL,
`date` datetime NULL,
`status` varchar(10) NULL,
`specifier` varchar(100) NULL,
`supplier` varchar(100) NULL,
`cost` decimal NULL,
`sales_amount` decimal NULL,
`estimate_qty` decimal NULL,
`unit` varchar(10) NULL,
`proposed_office` varchar(100) NULL,
`proposed_person` int NULL,
`followed_office` varchar(100) NULL,
`followed_person` int NULL,
`remark` varchar(200) NULL,
PRIMARY KEY (`project_id`)
);